我正在使用 LINQ to SQL 来加速项目的交付,这真的很有帮助。但是,我正在为一些我习惯于使用手动 SQL 做的事情而苦苦挣扎。
我有一个 LINQ 集合包含三列,每列包含一个 bool 值 表示电子邮件、手机或地址是否可用。
我要编写一个 LINQ 查询来计算每列的真值 ,所以电子邮件列中有多少行设置为 true(其他两列相同)
最佳答案
如果您需要包含结果的单个对象:
var result = new {
HasEmailCount = list.Count(x => x.HasEmail),
HasMobileCount = list.Count(x => x.HasMobile),
HasAddressCount = list.Count(x => x.HasAddress)
};
或者使用聚合函数:
class Result
{
public int HasEmail;
public int HasAddress;
public int HasMobile;
}
var x = data.Aggregate(
new Result(),
(res, next) => {
res.HasEmail += (next.HasEmail ? 0 : 1);
res.HasAddress += (next.HasAddress ? 0 : 1);
res.HasMobile += (next.HasMobile ? 0 : 1);
return res;
}
);
x
是类型 Result
并包含汇总信息。这也可用于更复杂的聚合。
关于sql - LINQ:计算多列中真正 bool 值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425157/