Saya bekerja dengan API yang Dikelola Layanan Web Exchange, dengan data kontak. Saya memiliki kode berikut, yang fungsional , tetapi tidak ideal:
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...
}
Seperti yang saya katakan, kode ini berfungsi . Sekarang saya ingin membuatnya sedikit menyusut , jika mungkin.
Saya tidak dapat menemukan metode apa pun yang memungkinkan saya memeriksa keberadaan kunci dalam kamus sebelum mencoba mengaksesnya, dan jika saya mencoba membacanya (dengan .ToString()
) dan tidak ada maka pengecualian dilemparkan:
500
Kunci yang diberikan tidak ada dalam kamus.
Bagaimana saya bisa memperbaiki kode ini untuk menyedot lebih sedikit (sementara masih berfungsi)?
TryGetValue
Pendekatan tampaknya seperti itu mungkin menjadi taruhan terbaik, karena saya menemukan halaman ini: goo.gl/7YN6 ... tapi aku tidak yakin bagaimana menggunakannya. Dalam kode saya di atas,row
adalah objek 'DataRow`, jadi saya tidak yakin kode contoh Anda benar, meskipun ...