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

时间:2013-03-12 09:23:22

标签: c# linq

我有这样的结构:

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。

3 个答案:

答案 0 :(得分:6)

fullTextLines.FindLastIndex(x => x.Contains("i am"));

答案 1 :(得分:4)

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;

答案 2 :(得分:1)

var lastIAmIndex = fullTextLines.Select((s,i) => new { s, i })
                                .Where(e => e.s.Contains("i am"))
                                .Select(e => e.i)
                                .OrderByDescending(i => i)
                                .FirstOrDefault()