-1

グリッド データを 1 つのオブジェクトにコピーしようとしています。

コード :

object obj = GrdReport.ItemsSource;    
PrepareDataForStackedChart1(obj);

関数は次のように定義されます。

private void PrepareDataForStackedChart1(object categoies)           
{              
    var Salespersons = (from cat in categoies    
                    select cat.Salesperson);    
}

エラーが発生しています:

「ラムダ式」から「System.Linq.Expressions.LambdaExpression」に変換できません

linq クエリでオブジェクトにアクセスする方法を教えてもらえますか?

4

1 に答える 1

0

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

いくつかの推測作業:

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 で定義された (おそらく) プロパティからコレクションを取得する場合がありItemsRowsます。幸運を..


事前編集:

エラーは、プレーン オブジェクトを列挙できないためです。列挙可能でなければなりません。オブジェクト値をメソッドに渡すのはなぜ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

于 2012-11-12T09:28:58.997 に答える