簡體   English   中英

如何使用點表示法進行LINQ交叉聯接

[英]How to do LINQ Cross Join With Dot Notation

我知道如何以點表示法編寫查詢表示聯接,但是如何編寫以點表示法編寫的交叉聯接?

    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#編譯器將交叉聯接查詢表示形式無形地轉換為點表示法時,該點表示法是什么樣的?

我想這是

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

它看起來應該像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM