相关疑难解决方法(0)

是否有更高效的LINQ语句来反向搜索List <T>中的条件?

我们正在尝试编写一个LINQ语句来反对List<T>从该列表的末尾向后搜索条件,但是在指定的"T"项停止.

例如,如果列表有1000个项目且"限制"项目位于995(索引994),那么我们只想搜索最后六个项目的测试条件.我们需要尽可能高性能.

但是,要使用LINQ,我们知道的唯一方法是获取'limit'项的现有索引,这是昂贵的,然后在整个源集合上运行Select with index,这也很昂贵,像这样......

// Assume limitItem is of type Foo and sourceList is of type List<Foo> 

var limitIndex = sourceList.IndexOf(limitItem);
var sourceListWithIndex = sourceList.Select( (Foo, Index) => new { Foo, Index } );

var fooWithIndex = sourceListWithIndex
    .LastOrDefault(item =>
        (item.Foo.SomTestValue == true)
        &&
        (item.Index >= limitIndex) );
Run Code Online (Sandbox Code Playgroud)

那么是否有一种更简单的方法可以告诉Linq"如果你检查过这个项目就停止枚举",或者我是否必须在基于索引的循环中自己手动执行它而根本不使用LINQ?

c# linq list

4
推荐指数
1
解决办法
1107
查看次数

标签 统计

c# ×1

linq ×1

list ×1