【发布时间】:2021-06-05 10:40:38
【问题描述】:
我有一个 SQL 查询并想转换为 LINQ 方法语法 (Lambda),但我似乎被困在多组连接中,这让我很困惑。 下面是我想改成LINQ的SQL
select MerchantUserId, usex.Nickname, MAX(OrderTransaction.CreatedDate) as LastOrderDate, sd.Url, st.Name as storename
from OrderTransaction
left join UserExtend usex
on usex.Id = OrderTransaction.MerchantUserId
left join StoreDomain sd
on sd.StoreId = usex.StoreId
left join store st
on st.id = sd.StoreId
where OrderTransaction.Status <> 8
and sd.IsPrimary = 1
group by MerchantUserId,usex.Nickname,sd.Url,st.Name
order by LastOrderDate desc
下面是我尝试将所有三个表链接在一起的查询。在将 3 个表格链接在一起方面,我做得对吗?
var list = _ApplicationDbContext.UserExtend
.GroupJoin(_ApplicationDbContext.OrderTransaction, usex => usex.Id, ord => ord.MerchantUserId, (usex, ord) => new { usex, ord})
.GroupJoin(_ApplicationDbContext.StoreDomain, usexOrd => usexOrd.usex.StoreId, sd => sd.StoreId, (usexOrdStoreDom, sd) => new { usexOrdStoreDom , sd})
.GroupJoin(_ApplicationDbContext.Store, usexOrdStoreDom => usexOrdStoreDom.usexOrdStoreDom.usex.StoreId, st => st.Id, (usexOrdStoreDomStore , st ) => new { usexOrdStoreDomStore, st })
【问题讨论】:
-
查看这个答案here,它显示了一个带有两个
groupjoins的示例。我认为这将有助于语法和布局。有很多通过谷歌找到的例子。
标签: c# mysql entity-framework linq sql-to-linq-conversion