2010-09-29 17 views
17

मैं एक वर्ग हैसंग्रह का उपयोग कर LINQ

public class Person 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

List<Person> PersonList = new List<Perso>(); 
PersonList.Add(new Person() { FirstName = "aa", LastName = "AA" }); 
PersonList.Add(new Person() { FirstName = "bb", LastName = "BB" }); 

मैं चाहूँगा अंतिम नाम के लिए एक अल्पविराम विभाजक के साथ एक स्ट्रिंग मिलता है, LINQ का उपयोग, परिणाम देखने के लिए की तरह: ए.ए., बी बी

धन्यवाद,

+0

.NET 3.5 या 4.0? –

उत्तर

42

आप .NET 4 उपयोग कर रहे हैं:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName)); 

आप .NET 3.5 उपयोग कर रहे हैं:

string lastNames = string.Join(",", PersonList.Select(x => x.LastName) 
               .ToArray()); 

, (मूल रूप से .NET 4 कुछ अतिरिक्त भार के string.Join को जोड़ा गया था।)

7

आप

PersonList.Select(p => p.LastName).Aggregate((s1,s2) => s1 + ", " + s2); 
+0

अच्छा विकल्प! –

8

उपयोग कर सकते हैं स्ट्रिंग आइटम श्रेणीबद्ध करने के लिए, विभाजक के साथ String.Join

उपयोग कर सकते हैं

.NET 3.5 और नीचे में, यह दूसरे पैरामीटर के रूप में एक सरणी लेता है, लेकिन 4.0 में इसका एक अधिभार होता है जो IEnumerable<T> लेता है, जहां 012 इस मामले मेंString है।

इस जानकारी के साथ सशस्त्र, यहां वह कोड है जो आप चाहते हैं।

.NET 3.5 के लिए:

string result = String.Join(", ", 
    (from p in PersonList 
    select p.LastName).ToArray()); 

.NET 4.0 के लिए आप toArray करने के लिए कॉल को छोड़ सकते हैं:

string result = String.Join(", ", 
    from p in PersonList 
    select p.LastName); 

आप LINQ-वाक्य रचना ड्रॉप करने और बस LINQ एक्सटेंशन का उपयोग करना चाहते हैं विधियों, यहाँ है कि संस्करण में एक ही है:

.NET 3.5 के लिए:

string result = String.Join(", ", PersonList.Select(p => p.LastName).ToArray()); 

.NET 4.0 के लिए आप toArray करने के लिए कॉल को छोड़ सकते हैं:

string result = String.Join(", ", PersonList.Select(p => p.LastName)); 

नोट: ऊपर के पाठ्यक्रम के रूप में अच्छी तरह से 4.0 में काम करता है 3.5 वेरिएंट, वे सिर्फ इसलिए नहीं निकाला या पुराना तरीका बदलने के लिए, वे ठेठ मामले के लिए एक जोड़ा।

संबंधित मुद्दे