为了账号安全,请及时绑定邮箱和手机立即绑定

在C#中使用条件表达式和方法

在C#中使用条件表达式和方法

C#
江户川乱折腾 2021-05-05 10:09:18
我有一个List<Animal>那里Animal有一个:int GetId();返回动物的ID。给定一个ID,获得特定动物的最佳方法是什么?我想知道是否有正确的方法来执行以下操作:targetId = 2; targetAnimal = animalList.Select(a => a.GetId() == targetId)
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您可以尝试这些方法

.Single或.SingleOrDefault

targetAnimal = animalList.SingleOrDefault(a => a.GetId() == targetId)

.First或.FirstOrDefault

targetAnimal = animalList.FirstOrDefault(a => a.GetId() == targetId)

您可能想了解更多有关这些功能的信息

Single() -仅有1个结果,如果不返回任何结果或多个结果,则引发异常。

SingleOrDefault() –与Single()相同,但是它可以处理空值。

First() -至少有一个结果,如果没有返回结果,则抛出异常。

FirstOrDefault() -与First()相同,但是不抛出任何异常,或者在没有结果时返回null。


查看完整回答
反对 回复 2021-05-21
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以使用FirstFirstOrDefault方法。

如果没有元素的ID,前者将抛出异常; 后者将返回default(T)(这将null用于引用类型(类),而所有字段都将初始化为默认值用于值类型(结构))。

return animalList.First(a => a.GetId() == targetID);

return animalList.FirstOrDefault(a => a.GetId() == targetID);

如果要返回默认值/后备值而不是default(T),则可以使用null-coalescing运算符:

return animalList.FirstOrDefault(a => a.GetId() == targetID) ?? theFallbackValue;


查看完整回答
反对 回复 2021-05-21
  • 3 回答
  • 0 关注
  • 204 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信