編集:たまたま、サードパーティのコントロールを使用していることを知りました (重複した質問から) 。その場合、オブジェクト ( ) を元の型にキャストするか、コントロールをどこかにバインドするために使用した元のコレクションを維持して、そのコレクションをメソッドに渡します。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