Linq组的查询与计数和其他字段在mvc4

本文关键字:其他 字段 mvc4 查询 Linq | 更新日期: 2023-09-27 18:02:05

我正在写linq查询从表中获得一些细节。我想要得到docStatus"notVerified"对每个clientID的计数。

我的表结构如下

ID     clientId  clientName     empID       docStatus
1       IN1001    Infy           100        Verified
2       IN1001    Infy           101        notVerified
3       IN1001    Infy           102        notVerified

查询后,我想要以下形式的数据

clientID    clientName    Count
IN1001      Infy          2   

这是我在下面尝试的。我能够得到计数,但我应该把哪里的条件在我下面的查询。

var noofRecords = (from c in db.ts_upld_doc
                   group c by c.upld_docid into grouping
                   select new
                   {
                       key = grouping.Key,
                       Count = grouping.Count()
                   });
return noofRecords.Count();

提前感谢。

Linq组的查询与计数和其他字段在mvc4

您可能会在分组之前放置where子句(为什么要将这些要过滤掉的项分组)。然后,如果您希望输出与指定的一样,最简单的方法是按clientIDclientName进行分组。

同样在上面的查询中,您按upld_docid (ID)字段分组-这是您的数据中的唯一字段-这意味着您的所有组的大小为1 -就好像您没有分组一样。

看下面的查询,应该做你想做的:

var noofRecords = (from c in db.ts_upld_doc
                   where c.docStatus == "notVerified"
                   group c by new { c.clientID, c.clientName }  into grouping
                   select new
                   {
                        ClientId = grouping.Key.clientID,
                        ClientName = grouping.Key.clientName,
                        Count = grouping.Count()
                   }).ToList();

where可以放置在多个位置,只有一个选项:

var noofRecords = (from c in db.ts_upld_doc
                   where c.docStatus == "notVerified"
                   group c by c.upld_docid into grouping
                   select new
                   {
                        key = grouping.Key,
                        Count = grouping.Count()
                   });
return noofRecords.Count();

Be Aware !!您返回的是记录的数量,而不是您设置为grouping.Count()的属性计数

要获得预期的结果,您应该执行以下操作:

var noofRecords = (from c in db.ts_upld_doc
                   where c.docStatus == "notVerified"
                   group c by new { c.clientId , c.clientName } into grouping
                   select new
                   {
                      ClientId  = grouping.Key.clientId,
                      ClientName = grouping.Key.clientName,
                      Count = grouping.Count()
                   });
return noofRecords.ToList();