C# 查询实体选择、内部联接和计数
我要转换此SQL查询:C# 查询实体选择、内部联接和计数,c#,sql,linq,entity-framework,C#,Sql,Linq,Entity Framework,我要转换此SQL查询: SELECT FirstName,LastName, WaiterId, Count(*) AS compte FROM Waiter INNER JOIN Client on Waiter.Id = Client.WaiterId GROUP BY WaiterId,lastname, firstname ORDER BY compte DESC; 在实体框架中 我试过这样的方法: var query = (from w in db.Wait
SELECT FirstName,LastName, WaiterId, Count(*) AS compte
FROM Waiter
INNER JOIN Client on Waiter.Id = Client.WaiterId
GROUP BY WaiterId,lastname, firstname
ORDER BY compte DESC;
在实体框架中
我试过这样的方法:
var query = (from w in db.Waiter
join c in db.Client on w.Id equals c.WaiterId
group c by c.WaiterId into g
//orderby
select new
{
WaiterId = g.Key,
count = g.Count()
});
但是我的选择不起作用。我不能选择名字和姓氏,我甚至不知道我的计数是否正确 您需要按将组中的所有属性包括在内
var query = (from w in db.Waiter
join c in db.Client on w.Id equals c.WaiterId
group c by new { c.FirstName, c.LastName, c.WaiterId} into g
orderby g.Count() descending
select new
{
FirstName = g.Key.FirstName,
LastName = g.Key.LastName,
WaiterId = g.Key.WaiterId,
count = g.Count()
});
在LINQ查询中,您只按WaiterId进行分组,而在SQL查询中,您按WaiterId、LastName和FirstName进行分组。将这些列添加到您的分组中,也可以让您选择它们。哦,是的!我以前没见过。非常感谢。好吧,我认为这很管用。我现在无法尝试,但我在我的程序中输入了你的代码,它返回0错误。(w.Firstname,w.LastName,顺便说一句:P)。再次感谢你!