2010-03-20 23 views

Trả lời

16

Thực chất đây là Select (trong hầu hết các trường hợp) giới thiệu mã nhận dạng minh bạch - thông qua loại ẩn danh bao gói tất cả các biến phạm vi hiện được chỉ định. Ví dụ, truy vấn này:

string[] names = { "Jon", "Mark" }; 

var query = from name in names 
      let length = name.Length 
      where length > 3 
      select name + ": " + length; 

được dịch sang một cái gì đó như thế này:

var query = names.Select(name => new { name, length = name.Length }) 
       .Where(z => z.length > 3) 
       .Select(z => z.name + ": " z.length); 
+2

Đừng có ý chỉ trích câu trả lời của bạn (trái tôi đánh giá cao nó), nhưng kể từ khi tôi có thể sử dụng mệnh đề let để viết nhiều phương thức phức tạp hơn và trong ví dụ của bạn ở đây, ký hiệu dấu chấm đã dài hơn và ít có thể đọc được hơn đối tác truy vấn exp, tôi cho rằng đây là trường hợp khác trong đó truy vấn exp thích hợp hơn so với dấu chấm quốc gia. Các trường hợp khác mà tôi biết liên quan đến việc viết tham gia. Bạn có đồng ý với quan sát đó không? Cảm ơn câu trả lời của bạn. –

+4

@Khnle: Đây có thể là vấn đề sở thích cá nhân. Tôi thực sự thích giao diện dấu chấm trong trường hợp này. Một khi bạn đã quen với cú pháp lambda, nó khá dễ đọc, mô tả chi tiết hơn về những gì đang thực sự xảy ra dưới mui xe, và không yêu cầu đường cú pháp bổ sung của câu lệnh 'let'. –

+2

@Khnle: Có - Tôi thường thấy rằng các biểu thức truy vấn giới thiệu số nhận dạng minh bạch (bao gồm cả cho phép và tham gia) dễ đọc hơn so với các ký hiệu dấu chấm của chúng. Mặc dù vậy, Robert chắc chắn là một sở thích cá nhân. –

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