की संपत्ति को नहीं बदल रहा है मैंने इसके बारे में कुछ प्रश्न देखे हैं, और कुछ शोध किए हैं।फॉरएच लूप कक्षा
मेरी समझ यह है कि जब आप IENumerable पर एक foreach चलाते हैं: यदि टी एक संदर्भ प्रकार (उदा। कक्षा) है तो आप लूप के भीतर से वस्तु के गुणों को संशोधित करने में सक्षम होना चाहिए। यदि टी एक मान प्रकार है (उदा। संरचना) यह काम नहीं करेगा क्योंकि पुनरावृत्ति परिवर्तक स्थानीय प्रतिलिपि होगी।
मैं निम्नलिखित कोड के साथ एक विंडोज स्टोर ऐप्स पर काम कर रहा हूँ:
मेरे कक्षा:
public class WebResult
{
public string Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string DisplayUrl { get; set; }
public string Url { get; set; }
public string TileColor
{
get
{
string[] colorArray = { "FFA200FF", "FFFF0097", "FF00ABA9", "FF8CBF26",
"FFA05000", "FFE671B8", "FFF09609", "FF1BA1E2", "FFE51400", "FF339933" };
Random random = new Random();
int num = random.Next(0, (colorArray.Length - 1));
return "#" + colorArray[num];
}
}
public string Keywords { get; set; }
}
कोड:
IEnumerable<WebResult> results = from r in doc.Descendants(xmlnsm + "properties")
select new WebResult
{
Id = r.Element(xmlns + "ID").Value,
Title = r.Element(xmlns + "Title").Value,
Description = r.Element(xmlns +
"Description").Value,
DisplayUrl = r.Element(xmlns +
"DisplayUrl").Value,
Url = r.Element(xmlns + "Url").Value,
Keywords = "Setting the keywords here"
};
foreach (WebResult result in results)
{
result.Keywords = "These, are, my, keywords";
}
if (control is GridView)
{
(control as GridView).ItemsSource = results;
}
एक बार परिणाम प्रदर्शित हो "कीवर्ड" संपत्ति "यहां कीवर्ड सेट करना" है। अगर मैं फ़ोरैच लूप में ब्रेक पॉइंट डालता हूं तो मैं देख सकता हूं कि परिणाम ऑब्जेक्ट संशोधित नहीं हो रहा है ...
क्या कोई विचार चल रहा है? क्या मैं बस कुछ स्पष्ट याद कर रहा हूँ? क्या Windows स्टोर ऐप्स के लिए .NET में IENumerable अलग-अलग व्यवहार करता है?
यदि आपके पास रिशेर्पर हाथ में था, चेतावनी "आईन्यूमेरेबल की संभावित एकाधिक गणना" संकेत हो सकता है। आप प्रत्येक गणना के लिए एक नया संग्रह उत्पन्न कर रहे हैं। –
संभावित डुप्लिकेट [एक आईनेमरेबल में परिवर्तन क्वेरी के बीच नहीं रखा जा रहा है] (http://stackoverflow.com/questions/4083771/changes-to-an-ienumerable-are-not-being-kept-between-queries) – R0MANARMY