我有SQL查询,我想用linq重写它。这个sql命令只能连接两个表并在它们上面进行分组。问题在小组中。当我在一个表上使用group by时,一切正常,linq commant返回与sql命令相同的结果。但是当我想要连接两个表然后按H.Ucet(例如)分组时,它会返回其他结果作为我的sql命令。结果与使用左连接时相同,但我需要默认的内连接。Linq组由多个表和内部联接
这是SQL命令:
string dotazBankUcty = @"SELECT
H.UCET,
SUM(H.MD) AS MD,
SUM(H.DAL) AS DAL ,
SUM(H.MD_M) AS MD_M,
SUM(H.DAL_ENA) DAL_M,
MAX(UBUC.KOD) AS KOD
FROM ACCOUNT H
inner join UBU on H.UCET = UBU.UCET GROUP BY H.UCET";
我试图通过这个LINQ命令重写它。
var accountQuery = new XPQuery<ACCOUNT >(CoreHelper.DataSession);
var ubuQuery = new XPQuery<UBU>(CoreHelper.DataSession);
var resultBankyUcty = (from h in accountQuery
join u in ubuQuery on h.CompoundKey1.UCET equals u.UCET
group new { h, u } by new { h.CompoundKey1.UCET } into gUcty
select new
{
Ucet = gUcty.Key.UCET,
MD = gUcty.Sum(k => k.h.MD),
DAL = gUcty.Sum(k => k.h.DAL),
MD_M = gUcty.Sum(k => k.h.MDM),
DAL_M = gUcty.Sum(k => k.h.DALM),
KOD = gUcty.Max(k => k.u.KOD)
});
任何人都可以帮我吗?我看不到错误。
我使用devexpress,devexpress是否有可能改写内连接到左连接?在输出中还有行值为空的行。 – mik3s
看起来不那么...... – Virus
内联接基本上是与过滤行的左连接,在你的情况下'u'为null。所以最简单的解决方法是添加'where u!= null'条件。 – Krzysztof