2009-12-14 17 views
6

cho đoạn mã sau:biệt có thể được thể hiện bằng cái gọi là truy vấn nhúng chứ không phải là một phương pháp gọi

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

Có thể gấp gọi .Distinct() vào cú pháp truy vấn nhúng?

một cái gì đó như int T-SQL

select distinct color from TableofColors 
+2

By the way, nó được gọi là Query Hiểu Cú pháp. – SLaks

+4

@SLaks: Hoặc chỉ "biểu thức truy vấn" theo mục 7,15 của thông số kỹ thuật. –

Trả lời

8

C# 's biểu thức truy vấn cú pháp này không bao gồm "khác biệt". VB của hiện, tuy nhiên - ví dụ, từ 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# tương đương sẽ phải gọi một cách rõ ràng Distinct() trong ký hiệu dấu chấm.

Tuy nhiên, ví dụ của bạn vẫn có thể được đơn giản hóa:

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

Đừng nghĩ rằng bạn đã sử dụng biểu thức truy vấn sử dụng LINQ :)

1

cú pháp truy vấn hiểu không hỗ trợ phương pháp Distinct.

Trong trường hợp của bạn, bạn chỉ cần viết colors.Distinct(); bạn không làm gì với biểu thức truy vấn.

2

Không có cú pháp truy vấn được nhúng riêng biệt trong C# theo như tôi biết. Đây là càng gần như nó được:

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

Bạn có thể thử

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

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

Điều này sẽ trả về một 'IEnmerable > ', không phải là một' IEnumerable '. – SLaks

+0

Bạn nên viết 'từ c trong nhóm màu c bằng c thành c chọn c.Key'. Ngoài ra, nó có thể sẽ chậm hơn một chút so với 'Distinct'. – SLaks

+0

SLaks. Bạn có bất kỳ số liệu thống kê chứng minh nhóm bằng cách chậm hơn thatn khác biệt? –

Các vấn đề liên quan