如何使用lambda编写IQueryable Join?
问题描述:
我有一个表:如何使用lambda编写IQueryable Join?
MyTable
(
ParentId Integer,
Type Integer,
ProdId String,
Date DateTime,
Status Integer
);
我要查询的未来:
var res = from tout in myTable.Where(t1 => t1.Type == 1)
join tin in myTable.Where(t2 => t2.Type != 1)
on tout.ParentId equals tin.ParentId
where tout.ProdId == tin.ProdId && tout.Status > tin.Status
orderby tout.Date
select new MyTableStructure
{
...
};
如何使用lambda写一样的IQueryable
?
答
像这样的事情
var query1 = myTable.Where(t1 => t1.Type == 1);
var query2 = myTable.Where(t2 => t2.Type != 1);
var join = query1.Join(query2, x => x.ParentId, y => y.ParentId, (query1, query2) => new { query1 , query2 }).Where(o => o.query1.ProdId == o.qyuery2.prodId).......
您的订单在明年有什么东西
+0
多谢唯一要注意的(我花了一些时间来实现什么究竟错) - 新{QUERY2,QUERY1} - 明智的,反之亦然顺序应该是有,以匹配原始连接 – Ksice
请纠正我,如果我错了,但是从研究(B/C我不知道该怎么办,要么) ,看起来两种语法看起来都一样。但是,这是您分配的类型,这会产生差异。 (即 - '的IQueryable解析度= .....''VS的IEnumerable 解析度= .....'http://www.dotnettricks.com/learn/linq/ienumerable-vs-iqueryable –
确定。补充,我也想用拉姆达 – Ksice
https://msdn.microsoft.com/en-us/library/bb534675(v=vs.110).aspx – Milney