如何在搜索参数之间获取项目

时间:2011-03-14 04:08:13

标签: c# .net windows linq linq-to-objects

使用C#。我有一个名为 InputList 的列表。从这个列表中我必须搜索一些字符串。搜索后我要选择搜索参数之间的所有项目。详细描述

文字输入文件 enter image description here

收藏: enter image description here

在阅读 textFile 后,我将数据存储在数据集中,然后将数据集转换为集合。从这个集合中我希望在搜索参数之间获得值。

我写了下面的语法,但是 r3 结果不能满足我。

var InputList = (from p in ds.Tables["InputFile"].Rows.Cast<DataRow>().ToArray() select p.ItemArray).ToList();

            var r3 = (from c in InputList
                      where c.Any(e => e.ToString().Contains("Loading")) 
                      select c).ToList();

如果有任何查询请问。请提前谢谢。

1 个答案:

答案 0 :(得分:0)

要在查询之间获得结果,SkipWhile()TakeWhile()会起作用(两者都有为谓词提供索引的变体),但我认为这不是你想要的你的形象。

var loadingIndexes = InputList.Select((r, i) => new { Row=row, Index=i })
                              .Where(x => x.Row.Any(e =>
                                  e.ToString().Contains("Loading"))
                              .Select(x => x.Index);
var betweenLines = loadingIndexes
                       .Select(i => InputList
                           .Skip(i)
                           .TakeWhile(r => !r.Any(e =>
                                                  e.ToString().Contains("FULL")))
                           .ToList())
                       .ToList();

此处betweenLinesListList的{​​{1}}个,其中每个列表位于包含字符串“Loading”(包括字符串)的DataRow之间)和包含字符串“FULL”(不包括)的下一个“DataRow”。