지정된 클래스 :그룹화하지 않고 단일 linq 문에서 둘 이상의 값을 Sum() 할 수 있습니까?
public class FooAmounts
int Id
decimal Month1
decimal Month2
...
decimal Month12
decimal Year2
decimal Year3
decimal Future
나는 매달의 합계를 가지고 하나의 새로운 FooAmounts를 만들 싶습니다
5 개 항목 (! 충분히 재미있게 아이디의 1-5)와 IEnumerable<FooAmounts>
/년이 Id == 1 + Id == 2 인 경우에만 예.
var footle = (from f in foolist
where f.Id == 1 || f.Id == 2
select new FooAmounts{
Month1 = Sum(month 1s),
Month2 = Sum(month 2s),
etc etc.
Future = Sum(futures)
).FirstOrDefault();
나는 다시 생성이 T-SQL에 노력하고 있습니다 :
select SUM(Month1) as Month1, SUM(Month2) as Month2, SUM(Month3) as Month3 from FooAmount where Id=1 or Id=2"
가 나는 group by f.Id into grp
절을 사용하여 유사한 acheive 수 있지만이 두 가지 항목으로 나를 잎 그러므로 내가 첫째를 사용할 수 없습니다/FoD, 나는 수동으로 그들을 합쳐야 할 것임을 의미한다. .. 나는 어떤 곳에서 트릭을 놓치고있는 것처럼 보인다?
참고 : FirstOrDefault()는 오직 하나의 개체를 포함하는 하나의 개체가 아니라 하나의 개체를 반환합니다. 나는 어쨌든 항상 하나의 항목 만 리턴해야한다고 생각한다. 아마도 계산에 들어가는 항목의 수에 관계없이 Sum()의 결과는 하나 뿐이다.
Apols, 아마도 심하게 말로 표현됩니다. 간단히 말하면 합계를 포함하는 끝에 하나의 객체를 가져오고, 객체 목록 (이미 가지고있는 것) 또는 매월 Sum (s => s.property)을해야합니다 ... Year 나는 원했다. – BlueChippy
@BlueChippy : 내 게시물을 더 많은 옵션으로 편집했습니다. 나는 그 옵션을 넘어서는 단순하고 우아한 아무것도 없다고 생각합니다. –
감사합니다 Jon - 나는이 t-sql와 동등한 "Select SUM (Month1) Month1, SUM (Month2) Month2, SUM (Month3) Month3 FooAmount에서 Id = 1 또는 Id = 2"로 다시 만들려고했습니다. :) – BlueChippy