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

时间:2014-09-18 06:07:07

标签: c# linq c#-4.0

我有一个返回一组对象的代码。我想将特定对象与该集合隔离开来。我正在尝试使用LINQ来做到这一点。但我没有那个,

var registerAck = ((pointAck)((response.Item))).Items[0].Item;

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

我正在获取System.Linq.Enumerable.WhereArrayIterator<>在我的戳。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

  1. 添加.ToList可能需要也可能不需要,因为这取决于您希望如何使用poke。 例如,如果您要仅使用foreach迭代结果一次,则.ToList是冗余的,并且不必要的代码执行和分配。
  2. 简而言之,您的代码可能没有错误,具体取决于您希望如何进一步使用poke

    1. 在我们这样做的同时,仅供参考,您可以使用Where方法替换特定过滤。结帐.OfType
    2. http://msdn.microsoft.com/en-us/library/vstudio/bb360913(v=vs.100).aspx

      它会更紧凑,更易读。 Items.OfType<poker>();

答案 2 :(得分:0)

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

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