Ser*_*ier 29 .net c# linq .net-4.0
环境:.NET4 C#
大家好,
我想结合这两个列表:{ "A", "B", "C", "D" }和{ "1", "2", "3" }
进入这一个:
{ "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "D1", "D2", "D3" }
Run Code Online (Sandbox Code Playgroud)
显然,我可以使用嵌套循环.但我想知道LINQ是否可以提供帮助.据我所知,Zip()在这种情况下不是我的朋友,对吧?
TIA,
Ani*_*Ani 37
基本上,您希望生成笛卡尔积,然后连接每个2元组的元素.这在查询语法中最容易做到:
var cartesianConcat = from a in seq1
from b in seq2
select a + b;
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 25
SelectMany 绝对是正确的方法,无论是使用多个"from"子句还是直接调用,但这里是Hightechrider使用它的替代方法:
var result = aList.SelectMany(a => bList, (a, b) => a + b);
Run Code Online (Sandbox Code Playgroud)
我个人觉得这更容易理解,因为它更接近"多个来自"版本:对于"aList"中的每个"a",我们产生一个新的序列 - 在这种情况下,它总是"bList".对于由笛卡尔连接产生的每个(a,b)对,我们投射到的结果只是两者的串联.
需要明确的是:两种方法都有效.我只是喜欢这一个:)
至于这是否比查询表达式语法更清楚......我不确定.我平时使用的时候,它只是使用单个运营商的情况下,方法调用,但是Join,GroupJoin,SelectMany和GroupBy,查询表达式做事情简单化.尝试两者,看看你发现哪些更具可读性:)
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |