List<object> _list = new List<object>();
public object Get => _list.Where( x => x.GetType() == typeof( int ) ).First();
当System.InvalidOperationException
的长度为零时,使用上述代码会产生Where
。
public object Get2
{
get
{
var where = _list.Where( x => x.GetType() == typeof( int ) );
if( 0 < where.Count() )
{
return where.First();
}
return null;
}
}
所以我用它来解决这个问题,但有没有办法让代码更清洁?
答案 0 :(得分:5)
FirstOrDefault将是您正在寻找的东西:
public object Get => _list.FirstOrDefault( x => x.GetType() == typeof(int))
如果集合为First()
,那么当您遇到NullReferenceException
加注null
时,FirstOrDefault
将为您提供默认值,以防无法选择。< / p>
Here您可以找到比较.First
和FirstOrDefault
的帖子,并描述您需要使用它们的方案
答案 1 :(得分:4)
当没有匹配时,使用FirstOrDefault
将null
作为返回值。
public object Get => _list.FirstOrDefault( x => x.GetType() == typeof( int ) );
答案 2 :(得分:2)
而不是First()
public object Get => _list.Where( x => x.GetType() == typeof( int ) ).First();
使用FirstOrDefault()
public object Get => _list.Where( x => x.GetType() == typeof( int ) ).FirstOrDefault();
答案 3 :(得分:0)
使用FirstOrDefault()
代替First()
。因为,First()
返回序列的第一个元素,它返回序列的第一个元素。当表中没有元素时,FirstOrDefault ()
不会抛出异常。
public object Get => _list.Where( x => x.GetType() == typeof( int ) ).FirstOrDefault ();
答案 4 :(得分:0)
FirstOrDefault:返回序列的第一个元素,如果没有找到元素,则返回默认值。抛出异常:仅当源为null时。在以下情况下使用:当预期超过1个元素且您只想要第一个元素时。