编辑:刚巧得知您正在使用第三方控件(来自您的重复问题),其ItemSource
属性采用System.Object
而不是IEnumerable
。在这种情况下,要么将您的对象 ( ItemSource
) 转换回原始类型,要么保留您用于在某处绑定控件并将该集合传递给您的PrepareDataForStackedChart1
方法的原始集合。
一些猜测工作:
1)任一个
object obj = GrdReport.ItemsSource;
PrepareDataForStackedChart1((IEnumerable<Category>)obj);
private void PrepareDataForStackedChart1(IEnumerable<Category> categories)
{
var Salespersons = (from cat in categories
select cat.Salesperson);
}
2)或者当你这样做时
GrdReport.ItemsSource = GetCategories();
像这样复制备份:
categories = GetCategories(); //categories is defined in proper scope.
GrdReport.ItemsSource = categories;
后来你做;
PrepareDataForStackedChart1(categories);
private void PrepareDataForStackedChart1(IEnumerable<Category> categories)
{
var Salespersons = (from cat in categories
select cat.Salesperson);
}
3)或者您可能会从您的 GridView 上定义的属性(可能)Items
Rows
获取集合。祝你好运..
预编辑:
该错误是因为您无法枚举普通对象。它必须是可枚举的。为什么要将对象值传递给您的PrepareDataForStackedChart1
方法?相反,您不能通过IEnumerable
自身吗?尝试
var categories = GrdReport.ItemsSource.OfType<Category>();
PrepareDataForStackedChart1(categories);
private void PrepareDataForStackedChart1(IEnumerable<Category> categories)
{
var Salespersons = (from cat in categories
select cat.Salesperson);
}
我假设你有父类Category