使用linq定义文本中元素的最后一个索引
本文关键字:最后一个 索引 元素 linq 定义 文本 使用 | 更新日期: 2023-09-27 18:03:41
我有这样的结构:
FileStream fs = new FileStream(fileName, FileMode.Open);
StreamReader sr = new StreamReader(fs);
while (!sr.EndOfStream)
{
string line=sr.ReadLine();
fullTextLines.Add(line);
}
和一些文本:
string txt = "begin
middle
i am a string
i am a string end"
我想得到最后一行索引包含"我是"。例如:我必须得到3,但当我使用Console.WriteLine(fullTextLines.LastIndexOf("GRID"));
时,我得到了-1。
fullTextLines.FindLastIndex(x => x.Contains("i am"));
var result = File.ReadLines(fileName)
.Select((s,i) => new { Line = s, Index = i })
.LastOrDefault(x => x.Line.Contains("i am"));
int index = result == null ? -1 : result.Index;
var lastIAmIndex = fullTextLines.Select((s,i) => new { s, i })
.Where(e => e.s.Contains("i am"))
.Select(e => e.i)
.OrderByDescending(i => i)
.FirstOrDefault()