2010-01-27 38 views
7

與陣列查詢我有數組編號= {2,3,4,5,6}凡在LINQ

現在我不得不從表「dtlRecord」,其中此號碼是一個列選擇行。

 
Number count 
2  10 
3  23 
4  20

所以,我需要的是

select sum(count) from dtlRecord where number in (2,3,4,5,6) group by number 

我需要上面的LINQ查詢到SQL

+0

這將涵蓋部分:http://stackoverflow.com/questions/857973 – 2010-01-27 00:23:28

回答

0

如何只使用內部聯接:

int[] numbers = new[] { 2, 3, 4, 5, 6 }; 

from r in dtlRecord 
join number in numbers on r.Number equals number 
group r by r.Number into g 
     select new { 
      Number = g.Key, 
      Sum = g.Sum(r => r.Count) 
     }; 

dtlRecord 
    .Join(numbers, r => r.Number, number => number, (r, number) => new {r, number}) 
    .GroupBy(arg => arg.r.Number, arg => arg.r) 
    .Select(g => new 
    { 
     Number = g.Key, 
     Sum = g.Sum(r => r.Count) 
    }); 
1
+0

我的數列中的Guid數據類型和當我在Linqpad中執行查詢時,它表示無法格式化節點'新'作爲SQL執行SQL – jvm 2010-01-27 00:21:45

+0

如果您的列是GUID,爲什麼您的示例顯示INT數字? – 2010-01-27 00:24:28

+0

只是想給出一個簡單的例子 – jvm 2010-01-27 00:25:02

3

使用Enumerable.Contains作者:

int[] numbers = new[] { 2, 3, 4, 5, 6 }; 
var query = from r in dtlRecords 
      where numbers.Contains(r.Number) 
      group r by r.Number into g 
      select new { 
       Number = g.Key, 
       Sum = g.Sum(r => r.Count) 
      }; 

foreach(var result in query) { 
    Console.WriteLine("Number = {0}, Sum = {1}", result.Number, result.Sum); 
} 
+0

+1因爲我的答案似乎混淆了OP。也許他會用你的榜樣運氣好些。 – 2010-01-27 00:26:54

+0

謝謝大家。解決。 – jvm 2010-01-27 00:31:17