2011-08-19 9 views
5

나는이 두 줄을 가지고 있는데, 똑같은 일을한다. 그러나 다르게 써진다. 더 나은 방법은 무엇이며, 그 이유는 무엇입니까?LINQ를 사용하는 더 좋은 방법은 무엇입니까?

firstRecordDate = (DateTime)(from g in context.Datas 
            select g.Time).Min(); 

firstRecordDate = (DateTime)context.Datas.Min(x => x.Time); 
+2

개인 취향의 사례라고 생각됩니다. 나는 개인적으로 두 번째가 더 명확하고 단순하다는 것을 알지만, 나는 다른 사람들이 그 반대라고 생각할 것이라고 확신한다. 나는 누군가가 같은 것을 컴파일하는지 아닌지를 확인할 수있을 것이라고 확신한다. :) – Chris

답변

6

메서드 구문과 쿼리 구문 사이에 의미 적 차이가 없습니다. 또한 지정된 조건과 일치하는 요소 수가 인 검색 또는 소스 시퀀스에서 최대 값을 갖는 요소 을 검색하는 쿼리와 같이 은 메서드 호출로만 표현할 수 있습니다.

http://msdn.microsoft.com/en-us/library/bb397947.aspx

또한 이쪽을 봐 : 그것은 당신이 편안 무엇을 내려 와서 당신이 발견하는 것은 더 읽을 수 .NET LINQ query syntax vs method chain

.

+0

흥미로운 +1 읽기. –

1

두 번째 것은 lambda 표현을 사용합니다. 작고 읽기가 쉽기 때문에 좋아합니다 (일부는 읽기 쉽다는 것을 알게되지만).

또한 SQL 배경이있는 경우 가장 먼저 적합합니다.

1

개발 팀과 관련하여 가장 이해하기 쉽거나 읽을 수있는 부분이 있습니다. 1 년 정도 후에 돌아와서 LINQ를 기억할 수 있는지 확인하십시오. 음,이 특정 LINQ는 분명 간단합니다 .--)

모범 사례는 매우 유망합니다. 한 가지 대답은 여기에 있습니다. 이 경우 두 번째 항목은 간결하고 개인적으로 처음보다 빨리 읽고 이해할 수 있기 때문에 두 번째 항목으로 이동합니다.

1

저는 개인적으로 람다 표현식을 사용하는 것을 선호합니다. 내가 아는 한 당신은 똑같은 것을 두 가지 방법으로 할 수 있다고 말하면서 진정한 차이는 없습니다. 우리는 람다를 모두 사용하기로 동의했는데, SQL을 좋아하지 않는 사람들을 읽고, 따라하고, 데리러 가기 쉽기 때문입니다.

1

실제로 각 형식에서 동등한 명령문을 작성한다고 가정 할 때 결과 측면에서는 전혀 차이가 없습니다.

주어진 검색어에 대해 가장 읽기 쉬운 문자로 이동하십시오. 조인과 많은 where 절 등이 복잡한 쿼리는 linq 쿼리 구문에서 쓰기/읽기가 더 쉽지만 context.Employees.SingleOrDefault(e => e.Id == empId)과 같은 간단한 구문은 메서드 체인 구문을 사용하면 더 쉽습니다. 일반적인 "하나가 더 좋습니다"규칙은 없으며 주어진 예제에 대해 두 사람이 의견 차이가있을 수 있습니다.

1

두 문 간에는 의미상의 차이가 없습니다. 선택한 스타일은 순전히 스타일 기본 설정의 문제입니다.

1

둘 중 하나에 명시 적 캐스트가 필요합니까? 시간이 이미 DateTime이 아닌가요?

개인적으로 나는 확장 메서드 구문이 LINQ 구문보다 익숙하다는 것을 알았으므로 두 번째 방법을 선호하지만 실제로는 개인적인 취향이므로 동일하게 수행합니다.

두 번째 것보다 정확하게 첫 번째처럼 쓰여진 것은 context.Datas.Select(x => x.Time).Min()입니다.따라서 Min(x => x.Time)을 사용하여 작성한 방법을 볼 수 있습니다. 두 가지 대신 연산 만 수행하기 때문에 약간 더 효율적일 수 있습니다.

1

실제로 쿼리 이해 구문은 확장 메서드 호출 시리즈로 컴파일됩니다. 두 구문은 의미 상 동일합니다. 선호하는 스타일이 무엇이든 사용해야합니다.

관련 문제