Where in the query with an array in LINQ

I have an array number = {2,3,4,5,6}

Now I need to select the rows from the "dtlRecord" table, where this number is a column.

 Number count
 2 10
 3 23
 4 20 

So i need

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

I need the query above in LINQ to SQL

+7
c # linq linq-to-sql
source share
3 answers

How to simply use the inner join:

 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) }; 

or

 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) }); 
0
source share

Use 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); } 
+3
source share
+1
source share

All Articles