0

WPFデータグリッドを使用しています。Linqを使用してデータグリッドから行を取得できますか?

何かのようなもの :

List<People> people = from products in datagrid1 select products.ToList<People>();

私は正しくないと思いますか?Linqがdatagridをサポートするのは素晴らしいことです。

ありがとうございました。

4

3 に答える 3

4

ItemSourceデータグリッドのプロパティをクエリできるはずです。

于 2012-09-27T05:35:58.123 に答える
2

あなたが遭遇している問題は、ItemsSource弱い型と強い型であると思われますがIEnumerable、ほとんどのLINQtoObjectsはで動作しIEnumerable<T>ます。このCast<T>()メソッドを使用して、必要に応じて各アイテムをキャストするシーケンスを作成できます。これを試して:

List<People> people = datagrid1.ItemsSource.Cast<People>().ToList();

フォームのクエリ式が表示された場合は、常にfrom x in source select x使用を検討する必要があることに注意してくださいsource。クエリ式を盲目的に使用しないでください。それぞれが何を意味するのかを理解し、それが必要なものを表現するのに最も適切な方法であるかどうかを判断します。

実際にもっと大きなクエリが必要な場合は、を経由したくない場合がありますList<People>。例えば:

// Note the explicit typing of the range variable, which corresponds to a Cast
// call in the query translation.
var query = from People person in datagrid1.ItemsSource
            where person.Age > 50
            select person.Name;

People(ちなみに、実際に人のコレクションを表していない限り、タイプをに変更することを検討してください。Personその場合は、コレクションの実際の意味を反映した名前を付ける必要があります。)

于 2012-09-27T06:03:28.360 に答える
1

これを試して:

List<People> people = (from product in datagrid1.ItemsSource
                       select product).ToList<People>();
于 2012-09-27T06:01:28.960 に答える