Tôi gặp sự cố khi nhận khóa bằng cách chỉ định giá trị. Cách tốt nhất tôi có thể đạt được điều này là gì?Lấy khóa từ giá trị - Từ điển <string, Danh sách <string>>
var st1= new List<string> { "NY", "CT", "ME" };
var st2= new List<string> { "KY", "TN", "SC" };
var st3= new List<string> { "TX", "OK", "MO" };
var statesToEmailDictionary = new Dictionary<string, List<string>>();
statesToEmailDictionary.Add("[email protected]", st1);
statesToEmailDictionary.Add("[email protected]", st2);
statesToEmailDictionary.Add("[email protected]", st3);
var emailAdd = statesToEmailDictionary.FirstOrDefault(x => x.Value.Where(y => y.Contains(state))).Key;
Không phải là 'FirstOrDefault (...). Key' nguy hiểm, như trong hành vi bất ngờ khi "OrDefault" xảy ra ở đây ? –
@ChrisMarisic Trường hợp 'OrDefault' trả về giá trị mặc định của loại bạn đang lặp lại. Đối với các kiểu tham chiếu, đó là 'null', nhưng đối với các kiểu giá trị, nó sẽ là một thể hiện mới của kiểu đó. Vì 'KeyValuePair' là một kiểu giá trị (tức là một 'struct'), trường hợp 'OrDefault' sẽ không dẫn đến một ngoại lệ tham chiếu null. Vì 'TKey' ở đây là' chuỗi', '.Key' của cá thể mới đó sẽ là' null'. –