【发布时间】:2017-01-05 10:34:05
【问题描述】:
我使用 Linqer 将 SQL 转换为 LinQ 但结果不一样 我的 SQL 查询:
Select ChuyenNganh.ChuyenNganhID,ChuyenNganh.TenChuyenNganh,SoLuong= count(BaiBao.ChuyenNganhID )
from BaiBao right join ChuyenNganh on ChuyenNganh.ChuyenNganhID = BaiBao.ChuyenNganhID
group by ChuyenNganh.ChuyenNganhID, ChuyenNganh.TenChuyenNganh
转换为 Linq
var queryChuyenNganh = from t in myPhanLoaiTaiLieuDataContext.ChuyenNganhs
join t0 in myPhanLoaiTaiLieuDataContext.BaiBaos on new { ChuyenNganhID = t.ChuyenNganhID } equals new { ChuyenNganhID = Convert.ToInt32(t0.ChuyenNganhID) } into t0_join
from t0 in t0_join.DefaultIfEmpty()
group t by new
{
t.ChuyenNganhID,
t.TenChuyenNganh
} into g
select new
{
ChuyenNganhID = (System.Int32)g.Key.ChuyenNganhID,
g.Key.TenChuyenNganh,
SoLuong =(Int32)g.Count()
};
结果:
Linq
SQL
谁能帮我修好?
【问题讨论】:
-
t0_join.DefaultIfEmpty()将返回 0 个计数行的默认值,因此为 1 -
我认为在你的 sql 查询中,你正确地加入了 BaiBao 和 ChuyenNganh,而在你 Linq 中,你正确地加入了 ChuyenNganh 和 BaiBao。右连接或左连接的订单事项,您正在计算基数(BaiBao.ChuyenNganhID)