使用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。

使用linq定义文本中元素的最后一个索引

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()