LINQ查询以调用实例方法
本文关键字:实例方法 调用 查询 LINQ | 更新日期: 2023-09-27 18:22:04
我写了一些形式如下的代码:
var queryResult = from instance in someCollection
where instance meets some criteria
select instance;
foreach (InstanceType instance in queryResult.ToList()) {
instance.SomeMethod();
}
这似乎有点多余,因为查询正在集合上迭代,然后还有另一次迭代来调用所有找到的实例上的方法。如果能够在查询中用调用实例方法,而不必编写额外的循环,那就太好了。
一个人怎么能只用一个查询就完成上面代码的功能呢?
您可以使用ForEach
调用void
方法:
someCollection
.Where(instance => instance meets some criteria)
.ToList()
.ForEach(item => item.SomeMethod(param1, param2, ...)); // Use Foreach(SomeMethod) for methods w/no args
只需从代码中删除.ToList()
即可。。而你只会在集合上循环一次。。
通常,建议不要在查询中产生副作用。。而像CCD_ 4这样的方法通常是副作用。。
除了删除ToList调用(这实际上是额外的和冗余的循环)之外,代码片段对我来说很好。
看起来好多了。不过,我不确定实际的迭代次数。
foreach (var instance in someCollection.Where(instance meets some criteria))
{
instance.SomeMethod();
}