如何做LINQ交叉连接与点表示法
本文关键字:表示 交叉连接 何做 LINQ | 更新日期: 2023-09-27 18:10:42
我知道如何在点表示法中编写查询表示法join,但是如何在点表示法中编写交叉连接?
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});