2013-07-02 30 views
7

Đây là bàn của tôi,danh sách lambda để kết hợp chuỗi

myTable 
------------- 
id  name  age 
------------------------- 
1  NameOne  10 
2  NameTwo  11 
3  NameThree  12 
4  NameFour  13 
5  NameFive  14 

Tôi lấy bàn của tôi thích,

var _myList = DBContext.myTables.ToList(); 

Tôi muốn để có được chuỗi thích

"NameOne,NameTwo,NameThree,NameFour,NameFive" 

Làm thế nào tôi có thể làm điều này theo cách ngắn hơn?

Trả lời

24

Sử dụng String.Join

string names = String.Join(",", _myList.Select(x => x.Name)); 

Hoặc thậm chí bạn có thể tránh tải cột khác từ DB:

string names = String.Join(",", DBContext.myTables.Select(x => x.Name)); 
0
var _myList = DBContext.myTables.ToList(); 
var names = _myList.Select(x => x.name); 
var formattedStrings = string.Join(", ", names); 
8

Có vẻ như bạn muốn:

string names = string.Join(",", DBContext.myTable.Select(x => x.Name)); 

Bạn don' t cần phải đi qua một intermedia te danh sách - và trong thực tế nó hiệu quả hơn không. Với truy vấn này, chỉ tên sẽ được tìm nạp từ cơ sở dữ liệu.

+0

Tôi có thể sửa một sai lầm nhỏ (fan lớn của Jon) :), bạn cần phải chuyển đổi nó thành một mảng, vì string.Join mong đợi một mảng chuỗi. – bazz

+0

@bazz, thực sự có một [overload] (http://msdn.microsoft.com/en-us/library/dd992421.aspx) chấp nhận 'IEnumerable'. – Andrei

+0

@bazz: Tùy thuộc vào phiên bản .NET bạn đang sử dụng. Danh sách quá tải đã được mở rộng đáng kể trong .NET 4. –

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