簡體   English   中英

如何在 C# 中使用 lambda 或 LINQ 執行子查詢、分組和聚合

[英]How to perform subquery,group by and aggregate together using lambda or LINQ in C#

I'm trying to perform groupby with aggregate function inside a subquery using lambda expression.I've manage to write the query using SQL but failing to do the same using Lambda expression. 我們如何使用 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
    )

下面是 model 表示

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 到 LINQ 食譜,這是我對您的 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
          };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM