यह एक LINQ क्वेरी से नई वस्तुओं बनाने के लिए आवश्यक वाक्य रचना के लिए एक महान लेख है ।
लेकिन, यदि ऑब्जेक्ट के फ़ील्ड में भरने के लिए असाइनमेंट सरल असाइनमेंट से अधिक कुछ हैं, उदाहरण के लिए, पूर्णांक में तारों को पार्स करना, और उनमें से एक विफल हो जाता है, तो इसे डीबग करना संभव नहीं है। आप किसी भी व्यक्तिगत असाइनमेंट पर ब्रेकपॉइंट नहीं बना सकते हैं।
और यदि आप सभी असाइनमेंट को सबराउटिन में ले जाते हैं, और वहां से एक नई वस्तु वापस कर देते हैं, और उस दिनचर्या में ब्रेकपॉइंट सेट करने का प्रयास करते हैं, तो आप उस दिनचर्या में ब्रेकपॉइंट सेट कर सकते हैं, लेकिन ब्रेकपॉइंट कभी ट्रिगर नहीं होगा।
तो बजाय: मुझे आसानी से डिबग और यह पता लगाने जो काम करने के लिए असफल रहा था
List<SuggestionItem> retList = new List<SuggestionItem>();
var query = from c in doc.Descendants("SuggestionItem") select c;
foreach (XElement item in query)
{
SuggestionItem anItem = new SuggestionItem(item);
retList.Add(anItem);
}
यह अनुमति दी:
var query2 = from c in doc.Descendants("SuggestionItem")
select new SuggestionItem
{ Phrase = c.Element("Phrase").Value
Blocked = bool.Parse(c.Element("Blocked").Value),
SeenCount = int.Parse(c.Element("SeenCount").Value)
};
या
var query2 = from c in doc.Descendants("SuggestionItem")
select new SuggestionItem(c);
मैं बजाय ऐसा किया।इस मामले में, XElement में एक फ़ील्ड गुम हो रहा था जिसे मैं सुझाव Item में सेट करने के लिए पार्सिंग कर रहा था।
मैं विजुअल स्टूडियो 2017 के साथ इन गॉथस में भाग गया, जबकि एक नई लाइब्रेरी दिनचर्या के लिए इकाई परीक्षण लिख रहा था।
स्रोत
2018-01-31 02:38:08
धन्यवाद, यह मेरे लिए काफी अच्छा है – Jeff