2009-11-26 16 views
7

का उपयोग कर रहा 3 अल्पविराम से अलग तार FirstName, MiddleInitial, LastNameपरिवर्तित अल्पविराम स्ट्रिंग अलग LINQ

मैं एक वर्ग NameDetails है है सूची:

FirstName ="John1, John2, John3" 
MiddleInitial = "K1, K2, K3" 
LastName = "Kenndey1, Kenndey2, Kenndey3" 

:

public class NameDetails 
{ 
    public string FirstName { get; set; } 
    public string MiddleInitial { get; set; } 
    public string LastName { get; set; } 
} 

मैं के रूप में तार के लिए मान मुझे नाम विवरण सूची को अल्पविराम से अलग तारों के मानों के साथ भरने की आवश्यकता है।

इसके लिए कोई linq? मुझे अपने एएसपीएनटी एमवीसी (सी #) एप्लिकेशन के लिए इसकी ज़रूरत है।

उत्तर

11

मैं दृढ़ता से इसे एक अच्छे समाधान के रूप में समर्थन नहीं देता हूं, लेकिन यह आपके द्वारा पूछा गया है, जो 'LINQ में इसे' करना है।

यह शायद सबसे कुशल समाधान भी नहीं है।

string FirstName ="John1, John2, John3"; 
string MiddleInitial = "K1, K2, K3"; 
string LastName = "Kenndey1, Kenndey2, Kenndey3"; 
List<String> fn = new List<String>(FirstName.Split(',')); 
List<String> mi = new List<String>(MiddleInitial.Split(',')); 
List<String> ln = new List<String>(LastName.Split(',')); 

IEnumerable<NameDetails> result = from f in fn 
     join i in mi on fn.IndexOf(f) equals mi.IndexOf(i) 
     join l in ln on fn.IndexOf(f) equals ln.IndexOf(l) 
     select new NameDetails {f, i, l}; 

मैं LINQPad इस्तेमाल किया इस (एक अनाम वर्ग, नहीं NameDetails calss के साथ) पहले बाहर की कोशिश करने के लिए।

+1

आपको सूची की आवश्यकता नहीं है स्ट्रिंग विधि स्ट्रिंग और सरणी की सरणी बनाई गई है LINQ – MichaelT

+3

द्वारा एक्सेस किया जा सकता है क्या यह नहीं दिखाता कि लिंक शायद इस नौकरी के लिए सबसे अच्छा उपकरण नहीं है? ऐसा लगता है कि लिंक को लूप के साथ बदलने के लिए यह बहुत स्पष्ट होगा। –

+0

मैं सहमत हूं, एक लूप पूरी तरह से पर्याप्त है। मैं बस कुछ LINQ कोशिश करने के लिए एक बहाना के रूप में इसका उपयोग करने की प्रशंसा की। – rohancragg

1

आप Linq to CSV लाइब्रेरी का उपयोग कर सकते हैं।

1

इसके अलावा मेरे पिछले जवाब देने के लिए आप भी आजमा सकते हैं:

// some setup 
string firstName ="John1, John2, John3"; 
string middleInitial = "K1, K2, K3"; 
string lastName = "Kenndey1, Kenndey2, Kenndey3"; 
var fn = firstName.Split(','); 
var mi = middleInitial.Split(','); 
var ln = lastName.Split(','); 

// the important bit 
var s = fn.Select((f, index) => new NameDetails {f, i = mi[index], l = ln[index]}); 

यह स्ट्रिंग प्रविष्टियों की असमान संख्या होने सरणियों को कमजोर हो जाएगा।

a previous answer on SO के कारण क्रेडिट।

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