2014-06-12 2 views
11

नीचे पूर्वानुमान को linq अभिव्यक्ति में कैसे परिवर्तित करें?मैं Foreach कथन को linq अभिव्यक्ति में कैसे परिवर्तित करूं?

var list = new List<Book>(); 

foreach (var id in ids) 
{ 
    list.Add(new Book{Id=id}); 
} 
+0

लिनक अभिव्यक्ति के रूप में इस तरह के सरल कथन को लिखने का कोई कारण? यह एक foreach के रूप में शायद अधिक पठनीय है। – Mephy

+2

Resharper यह आपके लिए एक क्लिक के साथ करता है :-) –

उत्तर

16

यह बहुत सीधे आगे है:

var list = ids.Select(id => new Book { Id = id }).ToList(); 

या यदि आप क्वेरी सिंटैक्स पसंद करते हैं:

var list = (from id in ids select new Book { Id = id }).ToList(); 

भी ध्यान रखें कि ToList() यदि आप वास्तव में List<Book> जरूरत है केवल आवश्यक है। अन्यथा, आमतौर पर लिंक की आलसी मूल्यांकन क्षमताओं का लाभ उठाना बेहतर होता है, और Book ऑब्जेक्ट ऑब्जेक्ट्स को केवल मांग पर ही बनाया जा सकता है।

+0

हालांकि मैं इस LINQ वाक्यविन्यास को कॉल नहीं करता। 'एक्स में आईडी से नई पुस्तक {आईडी = एक्स}' का चयन करें LINQ की तरह अधिक लगता है। –

+2

@RandRandom यह निश्चित रूप से LINQ वाक्यविन्यास है, यह क्वेरी वाक्यविन्यास के विपरीत केवल LINQ विधि वाक्यविन्यास है। हालांकि, दोनों अभी भी (इस मामले में), लिंक-टू-ऑब्जेक्ट्स का उपयोग करते हैं। Http://msdn.microsoft.com/en-us/library/bb397947.aspx –

+0

@RandRandom पूर्णता के लिए क्वेरी सिंटैक्स जोड़ा गया देखें। –

1
var list = ids.Select(id => new Book(id)).ToList(); 
+4

यह पुस्तक में ऐसे निर्माता हैं। – VahidNaderi

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