2013-04-24 60 views
0

我知道如何使用點符號來編寫查詢符號加入,但是如何以點表示法編寫交叉連接?如何使用點符號進行LINQ交叉加入

List<Alpha> als = new List<Alpha>{new Alpha(), new Alpha()}; 
    List<Bravo> bros = new List<Bravo>{new Bravo(), new Bravo()}; 

    //so far so good. 
    var res = from a in als 
       from b in bros 
       select new { A = a, B = b }; 

    var what = res.ToArray(); 

    //hmmmm. Not so sure. 
    var result = als.Join(bros, null, null, (x, y) => new { X = x, Y = y }); 

問這個問題的另一種方法:在C#編譯器不可見的轉換交叉聯接查詢符號爲點符號,什麼點符號看起來像不?

+0

這將有助於瞭解從查詢語法的「點號」的翻譯是怎麼做。一旦你明白了,那麼這應該是蛋糕。 – 2013-04-24 04:46:54

回答

1

我認爲它

als.SelectMany(x => bros, (a, b) => new {A = a, B = b}); 
-1

它應該是這個樣子:

var res = als.Join(bros, 
    alsItem => alsItem.IdToJoin, 
    brosItem => brosItem.OtherId, 
    (alsItem, brosItem) => {X = alsItem, Y = brosItem}); 
+0

這將是一個內部連接。 – 2013-04-24 04:32:24

1
als.SelectMany(a => bros.Select(b => new {A = a, B = b}));