【问题标题】:Converting SQL Query into Linq (c#) with Distinct使用 Distinct 将 SQL 查询转换为 Linq (c#)
【发布时间】:2020-03-13 22:51:29
【问题描述】:

我正在尝试使用 Linq 编写我的 SQL 语句,但我不太明白。我知道有很多熟悉的帖子,但也许你可以帮助我了解我的帖子并帮助我了解它是如何工作的。

我的 SQL 查询:

SELECT DISTINCT(cou.Country1) AS Laender, COUNT(cou.Country1) AS Anzahl FROM SEC_User be
INNER JOIN PAR_Company com ON com.CompanyID = be.CompanyID
INNER JOIN DAT_Country cou ON cou.CountryID = com.CountryID
Group by cou.Country1

我认为我的开始可能是正确的:

var query = from user in db.SEC_User
join com in db.PAR_Company on user.CompanyID equals com.CompanyID
join cou in db.DAT_Country on com.CountryID equals cou.CountryID

提前致谢!

【问题讨论】:

  • DISTINCT 不是一个函数,它是SELECT DISTINCT 的一部分,适用于整个选定的行。跳过那些额外的括号并简单地写SELECT DISTINCT cou.Country1 AS Laender, ... 以使代码更清晰。然而……
  • ...(续)当您执行 GROUP BY, 时,您很少不需要执行 SELECT DISTINCT,因为 GROUP BY 本身不会返回重复行。简单地做一个简单的SELECT

标签: c# sql entity-framework linq linq-to-entities


【解决方案1】:

你可以试试这个。您不需要 DISTINCT 和 group by。 group by 已经使其与众不同。

var query = from user in db.SEC_User
join com in db.PAR_Company on user.CompanyID equals com.CompanyID
join cou in db.DAT_Country on com.CountryID equals cou.CountryID
group cou by user.Country1 into g
select new { Laender = g.Key, Anzahl = g.Count()};

【讨论】:

  • 您好 Serkan,非常感谢您的回答,它成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-25
  • 2020-12-13
  • 2021-05-30
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多