使用LINQ从对象列表中获取一组特定的对象

本文关键字:对象 一组 LINQ 列表 获取 使用 | 更新日期: 2023-09-27 18:22:21

我有一个返回一组对象的代码。我想从那个集合中分离出一个特定的对象。我正在尝试使用LINQ来做到这一点。但我不明白,

var registerAck = ((pointAck)((response.Item))).Items[0].Item;
var poke = ((pointAck)((response.Item))).Items.Where(x => x.GetType() == typeof(poker));

我得到一个System.Linq.Enumerable.WhereArrayTerator<>在我的口袋里。

我在这里做错了什么?

使用LINQ从对象列表中获取一组特定的对象

添加.ToList()将其转换为System.Collections.Generic.List<TSource> 类型

var poke = ((pointAck)((response.Item))).Items
           .Where(x => x.GetType() == typeof(poker)).ToList();
  1. 添加.ToList可能是必需的,也可能不是必需的,因为这取决于您希望如何使用poke。例如,如果只使用foreach对结果进行一次迭代,那么.ToList是多余的,并且是不必要的代码执行和分配

简而言之,您的代码可能没有任何问题,这取决于您希望如何进一步使用poke

  1. 当我们在做的时候,仅供参考,有一种替代Where方法进行特定过滤的方法。。结账.OfType

http://msdn.microsoft.com/en-us/library/vstudio/bb360913(v=vs.100).aspx

它将稍微紧凑一点,可读性更强。Items.OfType<poker>();

对不起。我忘了添加.ToList()。它有效。

var poke = ((pointAck)((response.Item))).Items.Where(x => x.GetType() == typeof(poker)).ToList();