Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 相当于以下SQL计数到LINQ计数_C#_Asp.net_Sql_Linq_Count - Fatal编程技术网

C# 相当于以下SQL计数到LINQ计数

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类似的查询。按方

我和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类似的查询。按方法分组,然后选择方法并计数

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() };