मैं संपर्क डेटा के साथ एक्सचेंज वेब सेवा प्रबंधित एपीआई के साथ काम कर रहा हूं। मेरे पास निम्नलिखित कोड है, जो कार्यात्मक है , लेकिन आदर्श नहीं है:
foreach (Contact c in contactList)
{
string openItemUrl = "https://" + service.Url.Host + "/owa/" + c.WebClientReadFormQueryString;
row = table.NewRow();
row["FileAs"] = c.FileAs;
row["GivenName"] = c.GivenName;
row["Surname"] = c.Surname;
row["CompanyName"] = c.CompanyName;
row["Link"] = openItemUrl;
//home address
try { row["HomeStreet"] = c.PhysicalAddresses[PhysicalAddressKey.Home].Street.ToString(); }
catch (Exception e) { }
try { row["HomeCity"] = c.PhysicalAddresses[PhysicalAddressKey.Home].City.ToString(); }
catch (Exception e) { }
try { row["HomeState"] = c.PhysicalAddresses[PhysicalAddressKey.Home].State.ToString(); }
catch (Exception e) { }
try { row["HomeZip"] = c.PhysicalAddresses[PhysicalAddressKey.Home].PostalCode.ToString(); }
catch (Exception e) { }
try { row["HomeCountry"] = c.PhysicalAddresses[PhysicalAddressKey.Home].CountryOrRegion.ToString(); }
catch (Exception e) { }
//and so on for all kinds of other contact-related fields...
}
जैसा कि मैंने कहा, यह कोड काम करता है । अब मैं इसे कम से कम चूसना चाहता हूं , यदि संभव हो तो।
मुझे कोई भी ऐसा तरीका नहीं मिल सकता है जो मुझे इसे एक्सेस करने के प्रयास से पहले शब्दकोश में कुंजी के अस्तित्व की जांच करने की अनुमति दे, और अगर मैं इसे (साथ .ToString()
) पढ़ने की कोशिश करता हूं और यह मौजूद नहीं है, तो एक अपवाद फेंक दिया जाता है:
500
दी गई कुंजी शब्दकोश में मौजूद नहीं थी।
मैं इस कोड को कम चूसने के लिए कैसे रिफ्लेक्टर कर सकता हूं (जबकि अभी भी कार्यात्मक है)?
TryGetValue
दृष्टिकोण है कि यह सबसे अच्छा शर्त हो सकता है, के बाद से मैं इस पेज पाया लगता है: goo.gl/7YN6 ... लेकिन मुझे यकीन है कि यह कैसे उपयोग करने के लिए नहीं कर रहा हूँ। ऊपर मेरे कोड में,row
एक 'DataRow` ऑब्जेक्ट है, इसलिए मुझे यकीन नहीं है कि आपका उदाहरण कोड सही है, हालांकि ...