如何使用Where扩展函数在N个列表中选择一个元素?
假设我有一个类 AddressType 定义如下:
public class AddressType {
public int AddressTypeId { get; set; }
public string Description { get; set; }
}
在代码中有一个 List 对象,如何选择具有已知 AddressTypeId 属性的 AddressType 对象?
我从未使用过 List.Where 扩展功能...
谢谢!
Suppose I have a class AddressType defined as is:
public class AddressType {
public int AddressTypeId { get; set; }
public string Description { get; set; }
}
Having a List object in code, how do I select an AddressType object with a known AddressTypeId property?
I have never used the List.Where extension function....
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
Where
获取列表中具有特定 ID 的所有AddressType
对象:但如果您只想要唯一一个具有特定 ID 的
AddressType
对象,您可以使用First
的特定ID:这将在列表中找到ID为123的第一个
AddressType
,如果没有找到,将抛出异常。另一种变体是使用
FirstOrDefault
:如果不存在具有所请求 ID 的
AddressType
,它将返回null
。如果您想确保列表中恰好存在一个具有所需 ID 的
AddressType
,您可以使用Single
:这将引发异常,除非恰好存在一个
ID 为 123 的列表中的 AddressType
。Single
必须枚举整个列表,使其比First
慢。You can get all
AddressType
objects in the list having a specific ID by usingWhere
:But if you only want the one and only
AddressType
having a specific ID you can useFirst
:This will find the first
AddressType
in the list having ID 123 and will throw an exception if none is found.Another variation is to use
FirstOrDefault
:It will return
null
if noAddressType
having the requested ID exists.If you want to make sure that exactly one
AddressType
exists in the list having the desired ID you can useSingle
:This will throw an exception unless there is exactly one
AddressType
in the list having ID 123.Single
has to enumerate the entire list making it a slower thanFirst
.或者:
or: