【发布时间】:2010-07-07 08:26:55
【问题描述】:
我有桌子
id pagenane 用户名
我想要这个 sql 查询
select pagename, count(*) as num from pagestat where username='name' group by pagename
我如何通过 linq 做到这一点?
【问题讨论】:
标签: c# linq linq-to-sql entity-framework
我有桌子
id pagenane 用户名
我想要这个 sql 查询
select pagename, count(*) as num from pagestat where username='name' group by pagename
我如何通过 linq 做到这一点?
【问题讨论】:
标签: c# linq linq-to-sql entity-framework
好吧,试试这个:
var query = from row in context.pageStat
where row.UserName == "name"
group row by row.PageName into g
select new { PageName = g.Key, Count = g.Count() };
【讨论】:
row.UserName == "name" 将区分大小写。也许不是您想要的用户名,并且(取决于数据库排序规则)也许不是原始 SQL 查询所做的。使用row.UserName.Equals("name", StringComparison.OrdinalIgnoreCase) 进行不敏感的比较;它在 L2S 和 L2E 中都受支持。
var retVal = (from s in dataContext.YourTable where
s.UserName.Equals("name")
group s by s.PageName into k
select new {PageName = k.Key, Count = k.Count() }).ToList();
【讨论】:
s 不在select 子句的范围内。此时,您处理的是组,而不是单个记录。幸运的是,您可以使用组的密钥。