LINQ-3通过计数进行分组选择
SQL: 林克:LINQ-3通过计数进行分组选择,linq,group-by,having,subquery,Linq,Group By,Having,Subquery,SQL: 林克: SELECT i.name, l.city, COUNT( l.city ) AS num FROM locality l JOIN event e ON e.ID_locality = l.ID JOIN program p ON p.ID_event = e.ID JOIN interpreter i ON i.ID = p.ID_interpreter WHERE i.name = 'XXXX' GROUP BY l.city HAVING COUNT( l.city)
SELECT i.name, l.city, COUNT( l.city ) AS num
FROM locality l
JOIN event e ON e.ID_locality = l.ID
JOIN program p ON p.ID_event = e.ID
JOIN interpreter i ON i.ID = p.ID_interpreter
WHERE i.name = 'XXXX'
GROUP BY l.city
HAVING COUNT( l.city) = (
SELECT MAX( num )
FROM ( SELECT COUNT( city ) AS num
FROM (SELECT l.city FROM locality l
JOIN event e ON e.ID_locality = l.ID
JOIN program p ON p.ID_event = e.id
JOIN interpreter i ON i.ID = p.ID_interpreter
WHERE i.name = 'XXXX'
GROUP BY l.city) tmp ) tmp2)
你好,,
我对LINQ中的这个选择有非常严重的问题。我在SQL中写了这个选择,但我不知道如何通过计数将multi-sub-select与group一起使用。。。我想选择“XXXX”口译员最常在哪个城市表演,以及口译员在那个里表演了多少次。我也检查了一下,但当我试着使用它时,它对我没有帮助。如果有人能帮助我,我会很高兴的。
为了更好的定位:我不确定,但我希望你能这样做
var q4 = from l in db.locality
join e in db.event on l.ID equals e.ID_locality
join p in db.program on e.ID equals p.ID_event
join i in db.interpreter on p.ID_interpreter equals i.ID
where i.name == "XXXX"
group l by l.city into grp
谢谢你。你的解决方案帮了我很多忙,只是g.count(x=>x.city)=(…不起作用。我想应该有g.count(x=>x.city)=(…但是subselect需要返回int number.Cuz g.count()==这里它需要int number。所以仍然需要少量修复。不过非常感谢:)嗯。是的。g.count(x=>x.city)==必须是。没有注意到。g.count(x=>x.city)==比括号可能起作用的时间晚些取消。我很高兴它起作用了。
var query = (from l in db.locality
join e in db.event on l.ID equals e.ID_locality
join p in db.program on e.ID equals p.ID_event
join i in db.interpreter on i.ID equals p.ID_interpreter
group l by new { i.name, l.city } into g
where i.name == "XXXX" &&
g.Count(x => x.city) == (from l in db.locality
join e in db.event on l.ID equals e.ID_locality
join p in db.program on e.ID equals p.ID_event
join i in db.interpreter on i.ID equals p.ID_interpreter
where i.name == "XXXX"
group l by l.city into g
select new
{
cityCount = g.Count(x => x.city)
}).Max()
select new
{
g.key.name,
g.key.city,
maxNum = g.count(x => x.city)
}).ToList();