2009-12-31 51 views
4

我有這樣如何將linq組合到sql中?

id = 1<pk> 
SDate = 12/12/2009 
EDate = 12/12/2009 
binding = a_1 
userid = 14 

id = 2<pk> 
SDate = 12/12/2009 
EDate = 12/12/2009 
binding = a_1 
userid = 14 

我通過結合希望將我的數據。我不知道如何做到這一點。我需要做一個新的選擇來做到這一點嗎?

到目前爲止,我有這個

Db.Table.Where(u => u.UserId == userId && u.Binding == binding) 
       .GroupBy(u => u.Binding) 

所以我想返回所有列。我必須去

.select(group = new Table {....}); 

回答

5

請記住,Linq的GroupBy不像SQL的GroupBy。 Linq的GroupBy返回一個.Key(這就是你的條件所屬的組),然後是一個IEnumerable,不管它是你分組的。所以,如果你想要的所有行的計數爲每一起綁定綁定本身,這將是:

var bindingsAndCounts = 
    Db.Table.Where(u => u.UserId == userId && u.Binding == binding) 
       .GroupBy(u => u.Binding) 
       .Select(g => new {g.Key, BindingCount = g.Count()}); 

這是一個結構的比SQL很多更強大,因爲你可以做幾乎任何事情表達式中的「g」。

如果你想通過每個組枚舉,你可以省略選擇:

foreach (var group in whateveryourgroupingExpressionWas) { 
    Console.WriteLine(group.Key); 
    foreach (var row in group) { 
     Console.WriteLine("ID: " + row.Id + "Name " + row.Name ...); 
    } 
} 
+0

嗯,我不知道。但在你的情況下,你不使用groupBy你使用select。 – chobo2 2009-12-31 23:14:22

+0

這就是.GroupBy()。Select() – 2009-12-31 23:27:48

+0

因此,我使用我的組,到目前爲止,然後添加一個類似於上面的選擇? – chobo2 2009-12-31 23:31:20