object selectedDataItem;
MyClass.Inventory inventory;
inventory = (MyClass.Inventory) selectedDataItem;
在inventory
中我们可以看到详细信息,例如:
Trace.Writeline(inventory.Name + " " + inventory.Place);
你看库存有inventory.Name,Inventory.Place我想包装IEnumerable或ObservableCollection中的所有属性,这样我就可以一次遍历所有库存而不是inventory.Name,inventory.Place等等...
如何制作广告资源IEnumerable
以便我可以执行以下操作:
IEnumerable<MyClass.Inventory> enumerable = (IEnumerable<MyClass.Inventory>) inventory;
enumerable = from x in enumerable where x.Name == inventory.Name select x;
现在,如果我这样做,则错误是
无法将“MyClass.Inventory”类型的对象强制转换为“System.Collections.Generic.IEnumerable`1 [MyClass.Inventory]”。
答案 0 :(得分:10)
这样做:
var enumerable = new [] { inventory };
答案 1 :(得分:3)
inventory
是类MyClass.Inventory
的一个实例,它不是一个可枚举的列表,因此您可以直接转换它。如果你真的想要一个带有该对象的枚举,那么你需要创建一个空的枚举并将该对象添加到它。
<强>更新强>
您必须先创建List
,然后将您的对象添加到该列表中,
List<MyClass.Inventory> lst = new List<MyClass.Inventory>();
lst.Add(inventory);
然后您可以将列表分配给可枚举的
IEnumerable<MyClass.Inventory> enumerable = lst;
答案 2 :(得分:2)
不确定为什么你需要这个,但是一旦我看到下一个扩展方法:
public static class CustomExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this T input)
{
yield return input;
}
}
答案 3 :(得分:1)
总的来说,这是一种不好的做法。如果您处理的数据不可迭代,则将其设为IEnumerable
毫无意义。
另一方面,如果您仍想使用IEnumerable<T>
,请使用List<T>
,将对象存储在其中,然后执行LINQ
查询!