2014-07-16 5 views
4

동시에 선택할 두 개의 열이있는 경우 어떻게 이것을 람다 식으로 변환합니까?람다 식 동시에 최소 및 최대 선택

LINQ

var lq=(from a in tbl 
      group a by 0 into b 
      select new { intYear = b.Min(p => p.intYear), tintMonth = b.Max(p => p.tintMonth) } 
    ).SingleOrDefault(); 

T-SQL

SELECT MIN(intYear), MAX(tintMonth) 
FROM tbl 

Lamdba 표현

당신이 반환에 의도 경우
tbl.Select(x => x.intYear).Min(); //Can't figure how to select if 2 columns 

답변

5

는 "행"을 보내고보다는 두 값, 당신은 그룹의 모든 행은 첫 번째 LINQ 표현에서 할 함께 같이 할 수

tbl.GroupBy(t => 1) 
    .Select(g => new { intYear = g.Min(p => p.intYear), tintMonth = g.Max(p => p.tintMonth) }) 

주, 나는 이것이 LINQ - 투 - SQL을위한 가정합니다. 일반 오래된 개체의 경우 컬렉션을 통해 세 번 반복 될 가능성이 큽니다. 하나는 그룹화, 하나는 Min(), 다른 하나는 Max()입니다. 대규모 컬렉션의 경우 한 번 루프를 수행하는 것이 좋으며 컬렉션을 통해 하나의 foreach을 사용하여 멋지게 꾸미는 것이 좋습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 귀하의 코드에서이 줄 tbl.GroupBy (t => 1)를 보았습니다.이 목적은 무엇입니까? 실제로 그것이 3 번 반복되는 것을 볼 수있는 방법입니까? 난 그냥 다음에 내가 어떻게 문제를 해결할 수 있는지 알고 코드를 확인하는 데 사용하는 방법을 알고 싶어요. – tsohtan

+0

실제로'group by a by 0 by b'과 동일하지만 0 대신에 1을 사용합니다 (실제로는 이유가 없습니다). –

+0

좋아요, 나는 또한 샘플 코드를 따르고 실제로 그게 무엇인지 모르겠습니다. 위에서 언급 한 반복에 대해 왜 반복이 가능한지 알지 못합니다. 어떻게 알 수 있습니까? – tsohtan