2014-04-10 3 views
0

다음과 같은 작업을 수행하는 방법을 찾는 데 문제가 있습니다. 이것은 순전히 의사 코드입니다.Linq 쿼리 - 합계를 반환

decimal totalActiveCost = (from i in _context.KeyActives 
          where i.Pk in (active1fk, active2fk, active3fk, active4fk, active5fk, keyActiveFk) 
          select sum(i.Cost)...` 

그런 다음 i.Cost를 합산하십시오. 그래서 기본적으로 각 "Active"에 대해 i.Cost를 반환해야합니다. 예를 들어, active1fk는 1, active2fk는 2 등입니다. 나는 이들 각각에 대한 비용을 얻고 그들을 요약 할 필요가있다.

답변

5

당신은 당신의 활성 외래 키를 가질 수 List<T> 같은 :

List<int> activeFks = new List<int> {1,2,3,4,5,}; 
var sum = (from i in _context.KeyActives 
      where activeFks.Contains(i.PK) 
      select i.Cost).Sum(); 

또는 방법 구문

가 :

이 같은
var sum = _context.KeyActives 
      .Where(r=> activeFks.Contains(r.PK)) 
      .Sum(r=> r.Cost); 
1

뭔가 작동합니다

List<Int> ids = new List<int>(); 
ids.Add(1); 
ids.Add(2); 
    var result = _context.KeyActives. 
       Where(c => ids.Contains(c.id)) 
       .Sum(c => c.Cost); 
+0

내가 편집 한 @Habib –

1
var ids = new List<int> {active1fk, active2fk, active3fk, active4fk, active5fk, keyActiveFk}; 
var sum = (from i in _context.KeyActives 
      where ids.Contains(i.Pk) 
      select i).Sum(a=> a.Cost);