如何检查

时间:2017-08-11 06:05:38

标签: c#

 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;
     }
 }

所以我用它来解决这个问题,但有没有办法让代码更清洁?

5 个答案:

答案 0 :(得分:5)

FirstOrDefault将是您正在寻找的东西:

public object Get => _list.FirstOrDefault( x => x.GetType() == typeof(int))

如果集合为First(),那么当您遇到NullReferenceException加注null时,FirstOrDefault将为您提供默认值,以防无法选择。< / p>

Here您可以找到比较.FirstFirstOrDefault的帖子,并描述您需要使用它们的方案

答案 1 :(得分:4)

当没有匹配时,使用FirstOrDefaultnull作为返回值。

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个元素且您只想要第一个元素时。