我有一个linq ForEach
语句,它为列表中的每个Report
对象调用一个方法。此方法为每个调用返回一个数据表数组,我想以某种方式获取返回的数据。我怎样才能使用linq ForEach而不是旧学校foreach (var x in x's) { ... }
?这是我的代码:
Reports.ForEach(r => r.LoadTableData(Event, Human, Animal, exData));
如何找回DataTable[]
正在返回的每个LoadTableData
?
答案 0 :(得分:16)
改为使用Select
:
var tables = Reports.Select(r => r.LoadTableData(Event, Human, Animal, exData));
Select
将一个集合映射到另一个集合(在这种情况下,Report
的集合到DataTable[]
的集合中)。事实上,Select
方法通常在其他语言中称为map
,例如Scala和Ruby。
ForEach
为源集合中的每个元素执行任意操作。
顺便说一句,ForEach
不是LINQ扩展的一部分。这只是List<T>
上的另一种方法。