使用Group by和Having子句将Sql查询转换为C#中的Linq To Sql查询

时间:2013-02-25 09:25:12

标签: sql linq linq-to-sql

我需要帮助将以下ql查询转换为Linq to Sql查询。

select Name, Address
from Entity
group by Name, Address
having count(distinct LinkedTo) = 1

想法是找到只有1个不同LinkedTo值的所有唯一名称,地址对。请记住,表格中还有其他列。

2 个答案:

答案 0 :(得分:2)

我会尝试这样的事情:

Entity.GroupBy(e => new { e.Name, e.Address})
      .Where(g => g.Select(e => e.LinkedTo).Distinct().Count() == 1)
      .Select(g => g.Key);

您应该在该行之后放置一个断点,并检查生成的SQL以查找实际发生在数据库中的内容。

答案 1 :(得分:0)

您可以使用:

from ent in Entities
group ent by new { ent.Name, ent.Address } into grouped
where grouped.Select(g => g.LinkedTo).Distinct().Count() == 1
select new { grouped.Key.Name, grouped.Key.Address }

生成的SQL不使用having子句。我不确定LINQ可以生成它。