我正在使用LINQ to SQL加速项目的交付,这真的有助于它。但是,我正在努力处理一些我习惯使用手动SQL的事情。
我有一个 LINQ集合,其中包含三列,每列包含一个布尔值,表示电子邮件,手机或地址是否可用。
我想写一个LINQ查询来给我一个每列的真实数,所以电子邮件列中有多少行设置为true(对于其他两行,相同)列)
答案 0 :(得分:2)
如果您需要包含结果的单个对象:
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
类型,包含汇总信息。这也可用于更强制的聚合。
答案 1 :(得分:1)
var mobileCount = myTable.Count(user => user.MobileAvailable);
等等其他计数。
答案 2 :(得分:1)
你可以这样做:
var emailCount = yourDataContext.YourTable.Count(r => r.HasEmail);
等