C#如何计算多个不同的列在 linq to sql?

标签: Linq SQLServer C#
发布时间: 2017/2/27 4:40:25
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我现在很纠结 Linq,因此它是一个瘸腿的问题但仍。 我有以下的 4 列的表

Pid   SKU    colorid   sizeid
1     'A65102'    38       2
2     'A65102'    38       4
3     'A65102'    38       18

我一定得多少不同的颜色和大小选项均可用于此。

在 sql 中,我用来做这件事︰

select count(distinct [sizeid]) ,count(distinct [colors]) 
from [item_master] 
where sku = 'A65102' 

但在 Linq 中,我可以得到的所有值

var dd = (from im in db.item_masters 
          where im.sku.Contains("A65102") 
          select new {im.sizeid,im.colors });

但怎样才能既在单个查询中的非重复值的计数?

解决方法 1:

您可以使用 GroupBy :

var distinctCounts = db.item_masters.GroupBy(im => im.sku)
    .Where(grp => grp.Key == "A65102")
    .Select(grp => new { 
        CntSizes  =  grp.Select(im => im.sizeid).Distinct().Count(),
        CntColors =  grp.Select(im => im.colorid).Distinct().Count()
    });
赞助商