2009-12-14 2 views
6

다음 코드 주어진 메소드 호출을 사용하여 표현 될 수있다고유 소위 포함 된 쿼리보다는

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = (from c in colors select c).Distinct(); 
distinctColors.Dump(); 

그것이 포함 된 쿼리 구문으로 호출 .Distinct()을 접을 수 있나요를? INT T-SQL

select distinct color from TableofColors 
+2

를 사용하는 쿼리 표현식을 사용한다고 생각하지 마십시오. – SLaks

+4

@SLaks : 또는 사양의 섹션 7.15에 따라 "쿼리 식". –

답변

8

C#의 쿼리 식 구문을 시도 할 수 있습니다. VB의 그러나 않습니다 - 예를 들어, MSDN docs for VB's Distinct clause에서 :

// VB 
Dim customerOrders = From cust In customers, ord In orders _ 
        Where cust.CustomerID = ord.CustomerID _ 
        Select cust.CompanyName, ord.OrderDate _ 
        Distinct 

는 C# 해당하는 명시 적으로 점 표기법에 Distinct()를 호출해야합니다.

그러나, 귀하의 예제는 여전히 단순화 할 수있다 :

string[] colors = {"red","green","blue","red","green","blue"}; 
var distinctColors = colors.Distinct(); 
distinctColors.Dump(); 

당신이 , 그것은 쿼리 이해 구문이라고 그런데 LINQ :

1

쿼리 이해 구문과 같은

뭔가가 Distinct 메서드를 지원하지 않습니다.

귀하의 경우에는 colors.Distinct(); 당신은 쿼리 식으로 아무것도하지 않습니다.

2

알고있는 한 C#에는 별개의 내장 된 쿼리 구문이 없습니다. 이것은수록 가깝다 :

var distinctColors = (from color in colors 
         select color).Distinct() 
0

당신은 "독특한"에 포함되지 않습니다이

var dis = from c in colors 
    group c by c; 

foreach (var cVal in dis) 
    { 
     string s = cVal.Key; 
    } 
+0

IEnumerable 가 아닌'IErouper >'을 반환합니다. – SLaks

+0

'c에서 c로 c의 색상 그룹 c를 c로 선택 c.Key'를 써야합니다. 또한 'Distinct'보다 조금 느릴 수 있습니다. – SLaks

+0

SLaks. 더 천천히 다른 그룹을 증명하는 통계가 있습니까? –

관련 문제