2011-06-06 96 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