2

我有这个现有的 Sql 语句:

Select Count(ordid),isnull(prcsts,'NOT STARTED')
from lwp
where lwp in( Select max(Id) from lwp group by ordid)
group by prcsts

我想转换为使用 linq-to-sql,但我不知道如何处理group by子查询中的表达式。我怎样才能做到这一点?

我正在使用实体框架,我有一种方法来获取 lwp 列表。我只做了一部分。

Entitydb.lwpmethod
        .GetList
        .Where(Function(F) F.ID = **Max(Function(O)  O.ordid**)
        .GroupBy(Function(F) F.prcsts)
        .Select(Function(F) New With {.A = F.Count, .B = F.Key})
        .ToList

我无法在 max 函数中按子查询编写组。

4

1 回答 1

0

首先,这不是一个in,这是一个=因为max()返回单个元素。您的 sql 查询也包含lwpwhere子句中,您可能拼写错误id。考虑到这一点,你想要的是这样的:

.Where(row=>row.ID=Entitydb.lwpmethod.GetList()
                                     .Where(r=>r.ordid=row.ordid)
                                     .Max(r=>r.ID))

C# 代码,但你明白了。

顺便说一句,这看起来像是在选择最后一行。为什么不直接按id后裔排序并取第一个元素?

于 2013-11-22T18:27:33.067 回答