将SQL转换为Linq Lambda
本文关键字:Linq Lambda 转换 SQL | 更新日期: 2023-09-27 18:01:22
我有两个实体(EF 6),分别命名为purchasing和Packets。我可以将这两个连接起来,但不太确定如何计算给定Purchase中包含的数据包。我有这个SQL查询转换为LINQ (Lambda表达式首选)。
谢谢
SELECT
Pur.*,
Pac.Price,
(SELECT COUNT(ID) FROM Packets WHERE PurchaseID = Pur.ID) AS PacketCount
FROM
Purchases AS Pur
INNER JOIN
Packets AS Pac
ON
Pur.ID = Pac.PurchaseID
注意:我检查了回答的Q,但没有一个是解决我的问题。
我不是LINQ专家(远非如此),但我做过类似的事情。你说你已经完成了连接。如果是:
var joinList = (from Item1 in Purchases
join Item2 in Packets
on Item1.Id equals Item2.PurchaseId
select new { Item1, Item2 }).ToList();
那么你可以去:
var subList = joinList.Where(j => j.Item1.Id == myId).Select(s => { new s.Item1, s.Item2.Price, Count = joinList.Where(j => j.Item1.Id == myId).Count() }).ToList();
这将为您提供一个类似于SQL返回的记录集的列表。注意,您需要拆分Item1中的所有字段(相当于purchas.*)。另一种方法是在Select中将它们全部命名(如s.t item2 . price)。
HTH