2013-07-02 9 views
7

Hier ist mein Tisch,Lambda-Liste zu kombinieren String

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

ich meine Tabelle abrufen will,

var _myList = DBContext.myTables.ToList(); 

I String mag

"NameOne,NameTwo,NameThree,NameFour,NameFive" 

bekommen Wie kann ich tun das auf kürzere Weise?

Antwort

24

Verwenden String.Join

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

Oder Sie können sogar Laden anderen Spalten von DB vermeiden:

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

Es klingt wie Sie wollen:

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

Sie don‘ Ich muss ein Intermedia durchlaufen te Liste - und in der Tat ist es effizienter nicht zu. Mit dieser Abfrage werden nur die Namen aus der Datenbank abgerufen.

+0

Darf ich einen kleinen Fehler korrigieren (großer Jon-Fan) :), müssen Sie es in ein Array konvertieren, da string.Join ein String-Array erwartet. – bazz

+0

@bazz, tatsächlich gibt es eine [Überladung] (http://msdn.microsoft.com/en-us/library/dd992421.aspx), die 'IEnumerable' akzeptiert. – Andrei

+0

@bazz: Es hängt von der Version von .NET ab, die Sie verwenden. Die Überladungsliste wurde in .NET 4 erheblich erweitert. –