2012-02-13 39 views
0

鲜明我有一个问题,这个查询在LINQ格式转换:在LINQ

select Version, count(distinct(idUser)) from HistoUsers 
group by Version 

什么我到目前为止是这样的:

public static List<VersionsUsed> GetNumberOfCompaniesUsingEachVersions2() 
{ 
    var foundUsers = (from hu in sdt.DataContext.HistoUsers 

         group hu by new { hu.Version, hu.IdUser } into g 
         select new VersionsUsed { nameVersion = g.Key.Version, NumberOfCompaniesUsingThisVersion = g.Count((g.Key.IdUser).distinct()) }); 

    return foundUsers.ToList(); 
} 

看来我有不同的语法问题() 任何人都可以帮助我吗? 由于事先

+0

检查这个http://blogs.msdn.com/b/charlie/archive/2006/11/19/linq-farm-group-and-distinct.aspx – AnarchistGeek 2012-02-13 10:12:57

+0

这是类似问题http://stackoverflow.com/questions/2786750/how-to-get-particular-column-distinct-in-linq-to-sql – AnarchistGeek 2012-02-13 10:13:36

+0

如果你正在谈论的SQL版本,它可以完美地与SQL服务器,对我来说没有问题 – Slrg 2012-02-13 10:14:21

回答

1
from hu in sdt.DataContext.HistoUsers 
group hu by new { hu.Version, hu.IdUser } into g 
select new VersionsUsed 
{ 
    nameVersion = g.Key.Version, 
    NumberOfCompaniesUsingThisVersion = g.Select(c=>c.IdUser).Distinct().Count() 
} 
+0

非常感谢您的帮助。它看起来是正确的,但我有太多的结果。就像如果不使用distinct()...我不明白为什么... – Slrg 2012-02-13 10:34:49

1

也许是这样的:

select new VersionsUsed 
     { 
      nameVersion = g.Key.Version, 
      NumberOfCompaniesUsingThisVersion = g.Select(a=>a.IdUser).Distinct().Count()) 
     }; 
+0

非常感谢您的帮助。它看起来是正确的,但我有太多的结果。就像如果不使用distinct()...我不明白为什么... – Slrg 2012-02-13 10:34:42

1

你不同的声明必须是这样的: Distinct(...)

在上

0

而不是distinct第一个字母使用关键字first。它将工作:

var foundUsers = (from hu in sdt.DataContext.HistoUsers 
    group hu by new { hu.Version, hu.IdUser } into g 
    select new VersionsUsed { nameVersion = g.Key.Version, NumberOfCompaniesUsingThisVersion = g.Count((g.Key.IdUser).First()) }); 
return foundUsers.ToList();