假設我有定義爲類地址類型是:如何使用Where擴展功能選擇N列表中的元素?
public class AddressType {
public int AddressTypeId { get; set; }
public string Description { get; set; }
}
具有代碼列表對象,我該如何選擇具有已知AddressTypeId屬性的地址類型對象?
我從來沒有使用過的List.Where擴展功能....
謝謝!
假設我有定義爲類地址類型是:如何使用Where擴展功能選擇N列表中的元素?
public class AddressType {
public int AddressTypeId { get; set; }
public string Description { get; set; }
}
具有代碼列表對象,我該如何選擇具有已知AddressTypeId屬性的地址類型對象?
我從來沒有使用過的List.Where擴展功能....
謝謝!
您可以通過使用Where
得到列表中的所有AddressType
對象具有特定ID:
IEnumerable<AddressType> addressTypes = list.Where(a => a.AddressTypeId == 123);
但是如果你只想要一個只有AddressType
有一個特定的ID可以使用First
:
AddressType addressType = list.First(a => a.AddressTypeId == 123);
這將在ID 123列表中找到第一個AddressType
,如果找不到,將會拋出異常。
另一個變化是使用FirstOrDefault
:
AddressType addressType = list.FirstOrDefault(a => a.AddressTypeId == 123);
它將返回null
如果沒有AddressType
具有請求ID存在。
如果你想確保只有一個AddressType
存在於列表具有所期望的ID,你可以使用Single
:
AddressType addressType = list.Single(a => a.AddressTypeId == 123);
除非恰好有ID列表中的一個AddressType
這將拋出一個異常123. Single
必須列舉整個列表,使其比First
慢。
IEnumerable<AddressType> addressList = ...
IEnumerable<AddressType> addresses = addressList.Where(a => a.AddressTypeId == 5);
或:
IEnumerable<AddressType> addresses =
from address in addressList
where address.AddressTypeId == 5
select address;