2011-06-06 91 views
2

我想从两个方法的结果中创建一个平坦的结果集,其中第一个结果是第二个结果。LINQ,连接两种方法的结果

例如,方法1返回1,2,3,我想将每个int提供给方法2,每次只返回4,5,6

因此,我希望回来就好1:4, 1:5, 1:6, 2:4, 2:5, 2:6, 3:4, 3:5, 3:6

一个结果如果可能的话,我想这样做在一个单一的LINQ查询(PREF C#)。 我希望这个解释清楚,有人可以帮助我。

编辑:

我不应该问。这很容易。对于任何需要它的人:

int[] aList = new int[] { 1, 2, 3 }; 

var enumerable = from a in aList 
       from b in GetResult(a) 
       select new { x = a, y = b }; 
+0

相反,你应该张贴自己的答案并在两天内接受它,或接受已发布的其他人的答案。 – 2011-06-06 23:24:42

回答

0

使用LINQ表达式在你的问题回答你的问题的

void Main() 
{ 
    var method1 = new[] {1,2,3}; 
    var method2 = new[] {4,5,6}; 

    var res = from m in method1 
     from m2 in method2 
     select String.Format("{0}:{1}", m, m2); 

    foreach (var x in res) { 
     Console.Out.WriteLine(x); 
    } 

} 
2

听起来就像您正在寻找SelectMany。

Func<IEnumerable<int>> method2 =() => new [] {4,5,6}; 
(new [] {1,2,3}) 
    .SelectMany(m1Arg => method2().Select(m2arg => string.Format("{0}:{1}",m1Arg,m2arg))); 

在查询语法,它是由两个*从* S在

var q = from a in List 
     from b in List2 
     select a,b... 
+0

哇,通常我更喜欢显式语法,但这似乎是查询语法更干净更清晰的一种情况。 – 2011-06-06 23:23:09

+0

同意,对于加入和SelectMany的加入案例,查询语法更简单 – 2011-06-06 23:40:47