使用 Linq 方法语法进行左连接

问题描述

我是 linq 的新手并且正在努力解决它。

我有 T-sql 查询,正在尝试转换 linq 查询。我在连接表时遇到了一些问题。

这里是 T-sql 查询

    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 (将#修改为@)