c# - 如何在 C# 中使用 lambda 或 LINQ 执行子查询、分组和聚合
问题描述
我正在尝试使用 lambda 表达式在子查询中使用聚合函数执行 groupby。我已经设法使用 SQL 编写查询,但未能使用 Lambda 表达式执行相同的操作。我们如何使用 Lambda 或 LINQ 编写相同的查询
select
[user_ID], FirstName, LastName, Phone, Fax, EmailAddress
from table1
where [user_id] in
(select [user_id]
from table2 group by [USER_ID]
having (sum(case when isregistered is not null then 1 else 0 end)) = 0
)
下面是模型表示
public class AccountDetails
{
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public string EmailAddress { get; set; }
public bool? IsRegistered { get; set; }
public string User_Id { get; set; }
}
解决方案
使用我的SQL to LINQ Recipe,这是我对您的 SQL 查询的翻译:
var subq = from a in table2
group a by a.User_Id into ag
where ag.Sum(a => a.IsRegistered != null ? 1 : 0) == 0
select ag.Key;
var ans = from a in table1
where subq.Contains(a.User_Id)
select new {
a.User_Id,
a.FirstName,
a.LastName,
a.Phone,
a.Fax,
a.EmailAddress
};
推荐阅读
- emacs - wdired 模式:创建、复制、删除文件和目录
- javascript - Brilliant.org 的身份验证问题(挑战)
- java - Dijksta 算法 - 邻接表和最小堆 - java
- c++ - Visual Studio C++ 调试时无法加载符号和访问冲突
- php - 解释为什么正则表达式太大 PHP/PCRE
- sql - 根据多对多关系返回记录列表的最快方法
- mysql - 使用 unixodbc 连接数据库时出现 IM004 错误(macos)
- python - 将 linsolve 解决方案映射到 Sympy 中的索引符号
- python - 如何在具有数组值的字典中循环
- angular - 如何在 ion-img 中将图像填充到整个空间而不丢失纵横比?