2012-02-13 42 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();