我是LINQ
和 Lambda 的新手,并尝试执行此类查询:
SELECT p.*,o.QTYSUM FROM Database1..Table1 p
INNER JOIN (
SELECT ISNULL(Sum(i.QTY),0) as QTYSUM,i.SKU
FROM Database2..Table2 i
WHERE i.LOCATION in ('Location1','Location2')
GROUP BY i.SKU) o on o.SKU=p.SKU
where o.QTYSUM>0
我正在使用 .net核心框架的 ASP.net核心网络应用程序。我已经声明了dbContext
并且能够分别单独查询两个表。我无法弄清楚如何获得连接的结果并且每次尝试时都会继续获得参数空例外。
我做了几次尝试,无法让它发挥作用。
使用我的1个替换进行更新以完成此操作
from p in _DB1context.Table1
join i in
(from i in _DB2context.Table2
where i.Location == "Location1" || i.Location == "Location2"
group i by i.SKU into mygroup
select new {
SKU = mygroup.First().SKU,
QtySum = mygroup.Sum(y => y.Qty) }
) on p.SKU equals i.SKU
where i.QtySum > 0
select new {
pgroup = p,
SKU= p.SKU,
QtySum= i.QtySum
};
我在运行ToList时立即收到错误,我知道我可以通过创建一个存储过程来解决这个问题,该存储过程执行我的SQL并运行_context.table1.FromSql(“Exec my_Stored_Procedure”)但我真的想要学习LINQ,一旦我知道我错在哪里,它将帮助我更好地理解这一点。 我还使用_DB1context.Table1.Join(...)进行了多次尝试。其中(...)。选择(...)具有相同的结果。
答案 0 :(得分:0)
他们给出了一个像这样的内连接的例子:
var innerJoinQuery =
from category in categories
join prod in products on category.ID equals prod.CategoryID
select new { ProductName = prod.Name, Category = category.Name }; //produces flat sequence