ฉันกำลังทำงานกับ Exchange Web Services Managed API ที่มีข้อมูลติดต่อ ฉันมีรหัสต่อไปนี้ซึ่งทำงานได้ แต่ไม่เหมาะ:
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` วัตถุดังนั้นผมไม่แน่ใจว่ารหัสตัวอย่างของคุณเป็นสิทธิ แต่ ...