C# 相当于以下SQL计数到LINQ计数
我和LINQ有些问题, 我的问题与下面的例子类似, 我有一个名为History的表,其中包含以下数据C# 相当于以下SQL计数到LINQ计数,c#,asp.net,sql,linq,count,C#,Asp.net,Sql,Linq,Count,我和LINQ有些问题, 我的问题与下面的例子类似, 我有一个名为History的表,其中包含以下数据 Method DateUsed A 2013/02/01 A 2013/01/01 B 2013/01/01 B 2012/01/01 <-- C 2013/01/01 C 2012/02/01 然而,我不知道如何在LINQ中实现这一点,有人能帮我实现LINQ等价物吗 提前感谢您将使用与SQL for LINQ类似的查询。按方
Method DateUsed
A 2013/02/01
A 2013/01/01
B 2013/01/01
B 2012/01/01 <--
C 2013/01/01
C 2012/02/01
然而,我不知道如何在LINQ中实现这一点,有人能帮我实现LINQ等价物吗
提前感谢您将使用与SQL for LINQ类似的查询。按方法分组,然后选择方法并计数
var result = History.Where(H=>H.DateUsed.Year == 2013)
.GroupBy(g => g.Method)
.Select(g => new {Method = g.Key, Count = g.Count()});
如果您处于linq to实体中,则需要
其他答案是正确的,此答案仅使用LINQ查询语法:
var result =
from m in context.History
where m.DateUsed.Year == 2013
/* or where SqlFunctions.DatePart( "YEAR", m.DateUsed ) == 2013 */
group m by m.Year into g
select new { Method = g.Key, Total = g.Count() };
我发现查询语法在某些情况下更容易使用,而LINQ扩展方法在其他情况下更容易使用。两者都熟悉会有帮助
注意:未测试试着使用这个:@Cyborgx37您完全正确(至少,如果您想编译代码;))注意,技术术语是“查询语法”,而不是“LINQ语言”。从技术上讲,LINQ是System.LINQ命名空间中的方法,因此其他答案使用LINQ,从技术上讲,查询语法不需要与LINQ结合使用,它可以用于映射到其他方法。@Servy-我认为我使用的术语不正确。谢谢
var result = History.Where(H=>H.DateUsed.Year == 2013)
.GroupBy(g => g.Method)
.Select(g => new {Method = g.Key, Count = g.Count()});
var result = context.History
//linq to entities
.Where(m => SqlFunctions.DatePart("year", DateUsed) == 2013)
//linq to object
.Where(m => m.DateUsed.Year == 2013)
//common part
.GroupBy(m => m.Method)
.Select(g => new {
Method = g.Key,
Total = g.Count()
});
var result =
from m in context.History
where m.DateUsed.Year == 2013
/* or where SqlFunctions.DatePart( "YEAR", m.DateUsed ) == 2013 */
group m by m.Year into g
select new { Method = g.Key, Total = g.Count() };