[英]Cast object to IEnumerable
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]”。
這樣做:
var enumerable = new [] { inventory };
inventory
是MyClass.Inventory
類的一個實例,它不是一個可枚舉的列表,因此您可以直接轉換它。 如果你真的想要一個帶有該對象的枚舉,那么你需要創建一個空的可枚舉並將該對象添加到它。
更新
您必須首先創建一個List
並將您的對象添加到該列表,因為,
List<MyClass.Inventory> lst = new List<MyClass.Inventory>();
lst.Add(inventory);
然后你可以將你的列表分配給可枚舉,如
IEnumerable<MyClass.Inventory> enumerable = lst;
不確定為什么你需要這個,但是一旦我看到下一個擴展方法:
public static class CustomExtensions
{
public static IEnumerable<T> ToEnumerable<T>(this T input)
{
yield return input;
}
}
一般來說,這將是一個不好的做法。 如果您正在處理的數據不可迭代,那么使其成為IEnumerable
是沒有意義的。
另一方面,如果您仍想使用IEnumerable<T>
,請使用List<T>
,將對象存儲在其中,然后執行LINQ
查詢!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.