[英]Linq query to get an object from list of lists
我有一個AccountContacts類,其中包含一個數據成員聯系人,該聯系人是類型ContactInfo的列表。
每個ContactInfo類都有兩個成員。 1.包含ContactTypes(字符串)的列表。2.一個Contact對象。
所以,看起來像
Class AccountContacts
{
List<ContactInfo> Contacts;
}
Class ContactInfo
{
List<string> ContactType;
Contact UserContact;
}
現在,如果我有一個AccountContacts對象(ac),如何獲取一個Contact對象,其中ContactInfo中的ContactType列表包含一個特定的字符串。
順便說一下,每個ContactType列表都是不同的。 這樣一次就可以返回Contact對象。
我嘗試過這樣的事情。
Contact myContact = ac.Contacts.Find(c => c.ContactType.Contains("specificString")).UserContact;
我可以獲取myContact。 只想知道有沒有更好的方法?
您正在使用Find
方法 ,如果與您的條件不匹配,即沒有與您的輸入匹配的ContactType
,則將產生null
結果。
調用.UserContact
時,這將導致NullReferenceException
,因為您無法執行null.UserContact
。
null
: var contact = (ac.Contacts.Where(c => c.ContactType.Contains("specificString")).Select(c => c.UserContact)).FirstOrDefault();
這使用Contains
方法確定列表中是否Contains
您要查找的字符串。
如果找到匹配項,則將選擇Contact
然后, FirstOrDefault
將獲取第一條記錄或返回null
。
ac.Contacts
.Where(x => x.ContactType.Contains("string"))
.Select(x => x.UserContact)
這將返回以“ string”作為ContactType的聯系人列表。
如果可以保證它們與眾不同:
var contact = ac.Contacts.SingleOrDefault(c => c.ContractType.Contains("string"));
if (contact != null)
{
var userContact = contact.UserContact;
}
else
{
// handle not found situation
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.