Join 需要将SQL交叉联接转换为LINQ

Join 需要将SQL交叉联接转换为LINQ,join,Join,我有两张桌子。表一和表二。每个表都包含一个带有itemPrice的列。我需要把这两列加在一起 下面的SQL查询返回正确的总和 SELECT SUM(item1+ item2) FROM (select SUM(t1.itemPrice) item1 from table1 t1 WHERE t1.userid=='jonh') tableA CROSS JOIN (select SUM(t2.itemPrice) item2 from table2 t2 WHERE t1.userid=='

我有两张桌子。表一和表二。每个表都包含一个带有itemPrice的列。我需要把这两列加在一起

下面的SQL查询返回正确的总和

 SELECT SUM(item1+ item2) FROM 
(select SUM(t1.itemPrice) item1 from table1 t1 WHERE t1.userid=='jonh') tableA
CROSS JOIN
(select SUM(t2.itemPrice) item2 from table2 t2 WHERE t1.userid=='jonh') tableB
我并不懒惰,但是上面的查询有太多的求和函数,我不知道从哪里开始编写LINQ查询

有人能帮忙吗?

Ceci

希望这会给你你想要的

from f in   (    
    from x in   (   from t1 in Table1 
                    where  t1.Userid.Equals("John") 
                    select new { Userid = t1.Userid }
                ).Distinct() 
    select new {    item1 = (   from z in Table1 
                                where z.Userid.Equals("John") 
                                select z.ItemPrice ).Sum() ??0 ,
                    item2 = (   from z in Table2 
                                where z.Userid.Equals("John") 
                                select z.ItemPrice ).Sum() ??0 } 
            ) select new { total = f.item1 + f.item2 }
如果一个表中没有“john”的记录,它将返回一个0并将其他表相加


希望这能有所帮助。

太棒了,效果很好!我永远也不会让这件事自己去做。非常感谢。快速提问。一定有更简短的方式写这个,不是吗?它似乎很长。@ceci,我不是LINQ专家,也许有经验的人可以想出一个更简洁的解决方案。Ed,你在查询中添加了这个“?0”,如果它为空,我会假设它返回零。我试着用谷歌搜索,但什么也找不到。你能解释一下它的用途吗?谢谢。您需要TableA和TableB的ItemPrice之和,但是如果您在TableA中没有“john”的行,但在TableB中有“john”的行,那么您的结果将为空。这个0表示如果为Null,则返回0。所以现在,即使只有一个表包含“John”的行,您也将得到有效的结果。这是Linq处理空值时的常见问题。此URL将为您提供信息。。。