2011-06-20 61 views
67

Khi viết truy vấn sử dụng cú pháp C# LINQ, có cách nào để sử dụng phương thức Queryable.SelectMany từ cú pháp từ khóa không?Có cú pháp C# LINQ cho phương thức Queryable.SelectMany() không?

Đối

string[] text = { "Albert was here", 
        "Burke slept late", 
        "Connor is happy" }; 

Sử dụng phương pháp thông thạo tôi có thể truy vấn

var tokens = text.SelectMany(s => s.Split(' ')); 

Có một cú pháp truy vấn giống như

var tokens = from x in text selectmany s.Split(' ') 
+0

ví dụ này cần cải thiện một số ... nhưng tôi nghi ngờ nó là ge ts điểm cơ bản trên. Vui lòng đề xuất các ví dụ tốt hơn. – BrianCooksey

Trả lời

91

Có, bạn chỉ cần lặp lại từ ... trong khoản:

var words = from str in text 
      from word in str.Split(' ') 
      select word; 
+1

C# có thực sự giải quyết vấn đề này cho SelectMany không? – BrianCooksey

+3

@BCooksey - Có ... vì bạn đang chọn từ bộ sưu tập được lồng trong kết quả đầu tiên. –

+3

Tất cả các cuộc gọi này có thể được dịch vụ bởi SelectMany, rất linh hoạt, nhưng trình biên dịch sẽ chọn giữa Select, SelectMany và thậm chí không có chuyển đổi nào cả, tùy thuộc vào dạng truy vấn – Sprague

17

Bạn có thể sử dụng một Compound from Clause:

var tokens = from s in text 
      from x in s.Split(' ') 
      select x; 
13

truy vấn của bạn sẽ được viết lại như sau:

var tokens = from x in text 
      from z in x.Split(' ') 
      select z; 

Đây là một trang tốt mà có một vài side-by-side ví dụ về Lambda và Cú pháp truy vấn:

Select Many Operator Part 1 - Zeeshan Hirani

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