2012-02-23 5 views
1

LINQ의 FirstOrDefault() and FirstOrDefault<string>()의 차이점은 무엇입니까?LINQ의 FirstOrDefault()와 FirstOrDefault <string>() 사이의 차이

누군가 나에게 간단한 설명을 주실 수 있습니까?

TypedDataSet ds= codeComponent.GetAllCode("test"); 
string status = (from s in ds.Codes 
       where s.Name == "hello" 
       select s.Remarks).FirstOrDefault(); 


TypedDataSet ds= codeComponent.GetAllCode("test"); 
string status = (from s in ds.Codes 
       where s.Name == "hello" 
       select s.Remarks).FirstOrDefault<string>(); 

답변

8

의미가 없습니다. 컴파일러는 콜렉션 유형에서 일반 인수를 추론 할 수 있습니다. 우리의 삶을 조금 더 단순하게 만드는 통사론적인 설탕.

이것은 LINQ와 관련이 없습니다. 명세는 generic 인자가 유추 될 수있을 때뿐만 아니라 추론 될 수있을 때 정의한다.

+0

나는 우리가 실질적으로 같은 대답을 게시 한 것을 좋아한다. –

+0

@ DBM : 예 ... 나는 간단한 것들을 좋아한다 : D –

4

차이는 없습니다. 명시적인 <string>을 생략하면 컴파일러에서 유형을 추론 할 수 있습니다.

2

C# 3.0에는 유형이 모호하지 않으면 명시 적 유형이 필요하지 않은 자동 일반 유추가 있습니다. 비고 필드를 가정, 귀하의 경우에는 (또한 C# 3.0) 확장 방법 FirstOrDefault()의 정의를

public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source); 

을 봐/속성이 문자열 유형 인, TSource는 문자열로 유추 할 수있다.