sql - LINQ:计算多列中真正 bool 值的数量

标签 sql linq linq-to-sql count

我正在使用 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/

相关文章:

SQL 运行总计按限制分组

linq-to-sql - DataContext.GetTable<TEntry> 的作用是什么?

asp.net-mvc - Entity Framework - 选择特定列并返回强类型而不丢失强制转换

c# - Linq 中的 DataLayer 具有不同版本的数据模型

c# - Linq:GroupBy 与 Distinct

c# - 如何将 System.Data.Entity.Infrastructure.DbQuery 类型转换为 System.Collections.Generic.List 类型?

java - hibernate join fetch 不会获取所有子项

mysql - SQL 查询中的 ORDER BY 子句

mysql - 在mysql中获取每个子表的10个项目

c# - 如何从 LINQ to SQL 中的另一个项目获取连接字符串?