问题描述
我是 linq 的新手并且正在努力解决它。
我有 T-sql 查询,正在尝试转换 linq 查询。我在连接表时遇到了一些问题。
SELECT CAST(CREATE AS DATE) CREATEDATE
A.ID,100 AS PRODUCTTYPE,SUM(ELEMENTCOUNT) AS NUMOFITEMS,SUM(ELEMENTCOUNT)*(CASE WHEN A.USERID=C.USERID AND PRODUCTTYPE=100 THEN C.PRICE ELSE 10 END) AS TOTALPRICE
FROM PRODUCTLIST A LEFT JOIN PRICELIST C ON A.USERID=C.USERID
WHERE CAST(CREATE AS DATE)>='2021-01-01'
GROUP BY CAST(CREATE AS DATE),A.ID
这里是 C# 代码:
var soldProducts = _context.ProductList
.Where(x => x.Created.Value.Date >= "2021-01-01")
.GroupBy(t => new { t.Created.Value.Date,t.UserId})
.Select(i => new SoldProductList()
{
Date = i.Key.Date,UserId = i.Key.UserId,ProductType = 100,NumOfItems = i.Sum(y => y.ElementCount),TotalPrice = i.Sum(y => y.ElementCount * ( **??** ))
}).ToList();
在y.ElementCount * ( **??** )
部分我想说如果ProductList中的UserId等于PriceList中的UserId,取这个价格;否则取价格为10。所以我需要加入ProductList和PriceList。
我尝试实现 GroupJoin 但无法理解 resultSelector 部分,为什么我需要结果选择器,如果我需要如何在这段代码中实现。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)