2009-09-04 70 views
14

Cách hiệu quả nhất để chuyển đổi truy vấn LINQ cột đơn thành mảng chuỗi là gì?Chuyển đổi truy vấn LINQ thành mảng chuỗi - C#

private string[] WordList() 
    { 
     DataContext db = new DataContext(); 

     var list = from x in db.Words 
        orderby x.Word ascending 
        select new { x.Word }; 

     // return string array here 
    } 

Note - x.Word là một chuỗi

Trả lời

30

Tôi thích phong cách lambda, và bạn thực sự phải được xử lý bối cảnh dữ liệu của bạn.

private string[] WordList() 
{ 
    using (DataContext db = new DataContext()) 
    { 
     return db.Words.Select(x => x.Word).OrderBy(x => x).ToArray(); 
    } 
} 
+2

Tôi thích tập luyện gc! - chỉ đùa thôi - đây là một điểm rất tốt. Cảm ơn. –

+0

Giải pháp tuyệt vời! –

4

nếu bạn gõ nó trong cú pháp Lambda thay vào đó bạn có thể làm điều đó dễ dàng hơn một chút với phương pháp ToArray:

string[] list = db.Words.OrderBy(w=> w.Word).Select(w => w.Word).ToArray(); 

hoặc thậm chí ngắn hơn:

return db.Words.OrderBy(w => w.Word).Select(w => w.Word).ToArray(); 
+0

cả cho lỗi - Không thể ngầm chuyển đổi loại 'Lời []' thành 'string []' –

+0

Corrected nó, bỏ lỡ .Word cắn – Robban

7

Làm thế nào về:

return list.ToArray(); 

Điều này giả định rằng x.Word thực sự là một chuỗi.

Nếu không, bạn có thể thử:

return list.Select(x => x.ToString()).ToArray(); 
+0

Cách thứ cho lỗi này - Không thể ngầm chuyển đổi loại 'AnonymousType # 1 [] 'thành' chuỗi [] '. Phương pháp thứ hai hoạt động! Cảm ơn! –

+0

Bỏ qua {} mới trong lựa chọn của bạn và bạn sẽ không phải giải nén loại ẩn danh, bạn sẽ chỉ có một chuỗi (giả sử Word là một cột ký tự). – tvanfosson

+0

@tvanfosson, "* giải nén một loại ẩn danh * có nghĩa là gì?" (Tôi giả định một bản chỉnh sửa đã được đưa ra cho câu trả lời này, bởi vì tôi không còn thấy bất kỳ 'mới {} '.) – kdbanman

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