2013-09-25 33 views
1

我試圖使用動態LINQ查詢使用Aggregate functionCOUNT()上的一些列但我不能夠實現,我所究竟期待是聚合函數COUNT()使用動態LINQ查詢

Select Count(Id),Id 
from Table1 
Group By Id 
Having Count(Id) > 1 

我想轉換相同的查詢動態linq查詢,有關如何實現這一目標的任何建議?

+0

使用讓關鍵字與具有數值Count(ID),然後構造LINQ查詢 –

+1

計算器部分成爲SQL來LINQ翻譯器 –

+0

最後,我能夠解決。從後來得到的解決方案http://stackoverflow.com/questions/2531679/how-to-write-this-linq-sql-as-a-dynamic-query-using-strings – Abhinay

回答

0

可能是這樣的

list.GroupBy(item => item.Id) 
    .Where(group => group.Count() > 1) 
    .Select(group => new { 
         Id = group.Key, 
         Count = group.Count() }); 
+0

你是拉姆達傢伙吧? –

+0

我想要使用DynamicLinq查詢的解決方案..你曾經建議使用常規的Linq查詢。 – Abhinay

0

被盜從here

var distinctItems = 
    from list in itemsList 
    group list by list.ItemCode into grouped 
    where grouped.Count() > 1 
    select grouped; 
0

以下兩個查詢會給你完全相同的結果: 第一與第二拉姆達沒有結果。

 var Table1 = new List<Row>(); 

     for (int i = 0; i < 10; i++) 
     { 
      for (int m = 0; m < 5; m++) 
      { 
       for (int x = 0; x < i + m; x++) 
       { 
        Table1.Add(new Row() { Id = m }); 
       } 
      } 
     } 

     var result = Table1.GroupBy(row => row.Id) 
        .Where(p => p.Count() > 1); 

     var resultB = from row in Table1 
         group row by row.Id into rowGrouped 
         where rowGrouped.Count() > 1 
         select rowGrouped; 

     foreach (var r in resultB) 
     { 
      Console.WriteLine("ID {0} count: {1}", r.Key, r.Count()); 
     }