1

如何编写包含有和子查询的 linq 到实体查询?例如:

SELECT * 
FROM   dbo.Gavahi g 
WHERE  g.id  NOT IN (
    SELECT    GavahiID
    FROM      dbo.AsnadMaliDetail  ad 
    GROUP BY  GavahiID 
    HAVING SUM (MablaghMoredEstefade) >= (
        SELECT mablagh
        FROM   dbo.Gavahi g 
        WHERE  g.id = ad.GavahiID
    )
)
4

1 回答 1

0

如评论中所述,最好研究如何使用 LINQ 操作集合,而不是在 SQL 中思考,然后尝试找到合适的翻译。Microsoft 尝试为 LINQ 方法使用 SQLish 名称,但事实是它们并不相似。

以下 LINQ 查询执行您在 SQL 中表达的内容,假设 GavahiId 是 Gavahi.Id 的外键:

var mablaghs = AsnadMaliDetails
        .GroupBy(x => x.Gavahi)
        .Where(g => g.Sum(y => y.MablaghMoredEstefade) < g.Key.Mablagh)
        .Select(x => x.Key);

请注意,在 MablaghMoredEstefade 的 SUM 上反转条件,允许直接选择GroupBy键(Gavahi),而不是在NOT IN其他地方使用主键。

如果您是 LINQ 新手,但您精通 SQL,我建议您尝试LINQPad,它可以让您一目了然地看到生成的 SQL。不过,免费版本不包括自动完成功能。

于 2013-01-08T17:27:22.163 回答