LINQ वास्तव में, क्वेरी करने डेटा के लिए है डेटा के भीतर मूल्यों में परिवर्तन नहीं। आप एक पूरी नई विस्तार आइटम बनाना चाहते हैं, आप ऐसा कर सकता है:
var newDetail = new Detail
{
Rows = detail.Rows.Select(r => new Row
{
Columns = r.Columns.Select(c => new Column { Name = c.Name, IsUpdated = c.Name.ToLower() == "id" ? true : c.IsUpdated }).ToList()
})
.ToList()
};
ध्यान दें कि ऊपर क्लीनर, सबसे अधिक संभावना हो सकता है, अगर आप अपने प्रकार के लिए निर्माताओं जोड़ा है, साथ ही।
कहा कि किया जा रहा है, अगर आप जगह में इसे अपडेट करना, जैसे आप दिखा रहे थे, मैं सिर्फ छोरों का प्रयोग करेंगे:
foreach(var row in detail.Rows)
foreach(var col in row.Columns)
if (col.Name.ToLower() == "id")
col.IsUpdated = true;
मुझे लगता है कि काफी आसान का पालन करने, विशेष रूप से इस मामले में पाते हैं।
स्रोत
2012-03-28 22:04:33
'LINQ' विधियां 'रीडोनली'' IENumerable' लौटाती हैं, इसका उपयोग मूल्यों को बदलने के लिए नहीं किया जाना चाहिए। – gdoron
http://stackoverflow.com/questions/823532/apply-function-to-all-elements-of-collection-through-linq – mellamokb