我需要一个map函数来操作两个集合(序列),如下所示:
map((col1Item, col2Item) => { col1Item.text.contains(col2Item); }, col1, col2)
我知道C#有Enumerable.Select
,但它接受一个集合。是否有“不止一个集合”替代品?
更新:
我目前的解决方案如下:
if (elements.Select ((element, index) => { element.Text.Contains (expectedTexts[index]); }).All ( res => res == true)) {
// do something if texts of each element from elements seq contains correspondent text from expectedTexts seq
}
虽然我仍然对更经典的“功能风格”替代品感到好奇。
答案 0 :(得分:1)
我认为您正在寻找IEnumerable.Zip。这需要两个IEnumerable实例,将函数应用于每个元素的相同索引处的元素,从而生成结果集合。例如:
IEnumerable<string> a;
IEnumerable<string> b;
// result will contain the concatenated strings
IEnumerable<string> result = a.Zip(b, (fromA, fromB) => fromA + fromB);