Tôi đang làm việc với API được quản lý dịch vụ web trao đổi, với dữ liệu liên hệ. Tôi có đoạn mã sau, có chức năng , nhưng không lý tưởng:
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...
}
Như tôi đã nói, mã này hoạt động . Bây giờ tôi muốn làm cho nó hút ít hơn một chút , nếu có thể.
Tôi không thể tìm thấy bất kỳ phương pháp nào cho phép tôi kiểm tra sự tồn tại của khóa trong từ điển trước khi thử truy cập nó và nếu tôi cố đọc nó (với .ToString()
) và nó không tồn tại thì sẽ có một ngoại lệ:
500
Khóa đã cho không có trong từ điển.
Làm thế nào tôi có thể cấu trúc lại mã này để hút ít hơn (trong khi vẫn hoạt động)?
TryGetValue
tiếp cận có vẻ như là đặt cược tốt nhất, vì tôi đã tìm thấy trang này: goo.gl/7YN6 ... nhưng tôi không chắc cách sử dụng nó. Trong mã của tôi ở trên,row
là một đối tượng 'DataRow`, vì vậy tôi không chắc mã ví dụ của bạn là đúng, mặc dù ...