[英]Linq query with multiple count
I am trying to query this table using LINQ: 我正在尝试使用LINQ查询此表:
Here's what I want to do: 这是我想做的:
Here's my LINQ query: 这是我的LINQ查询:
var query = from a in table
where a.Country.Equals("USA")
group a by a.Product_brand into grp
select new
{
Product_brand = grp.key.Product_brand,
Country = grp.Key.Country,
Black = grp.Count(a => a.Black=="Yes"),
White = grp.Count(a => a.White=="Yes"),
Red = grp.Count(a=> a.Red=="Yes"),
Green = grp.Count(a=> a.Green=="Yes")
}
I don't know what's wrong with my query, I keep getting this message: 我不知道我的查询出了什么问题,我不断收到以下消息:
Alternative Solution: 替代解决方案:
Sql query: SQL查询:
SELECT [Product brand], Country,
sum(case when [Black] = 'Yes' then 1 else 0 end) as Black,
sum(case when [White] = 'Yes' then 1 else 0 end) as White,
sum(case when [Red] = 'Yes' then 1 else 0 end) as Red,
sum(case when [Green] = 'Yes' then 1 else 0 end) as Green,
FROM dbo.Table
group by [Product brand], Country
You have to group by two fields if you want it to work something like: 如果您希望它工作类似,则必须按两个字段分组:
var query = from a in table
where a.Country.Equals("USA")
group a by new {a.Product_brand, a.Country} into grp
select new
{
Product_brand = grp.key.Product_brand,
Country = grp.Key.Country,
Black = grp.Count(a => a.Black=="Yes"),
White = grp.Count(a => a.White=="Yes"),
Red = grp.Count(a=> a.Red=="Yes"),
Green = grp.Count(a=> a.Green=="Yes")
}
In VB.Net code is like that 在VB.Net中的代码是这样的
Dim query=(from a in table
where a.Country = "USA"
group a by a.Product_brand,a.country into grp = group _
select new with
{
.Product_brand=Product_brand,
.country=country,
.Black = grp.Count(Function(a) a.Black="Yes"),
.White = grp.Count(Function(a) a.White="Yes"),
.Red = grp.Count(Function(a) a.Red="Yes"),
.Green = grp.Count(Function(a) a.Green="Yes")
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.