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- 而大多数 LINQ to Objects 都适用于IEnumerable<T>. 您可以使用该Cast<T>()方法创建一个序列,该序列将在必要时转换每个项目。尝试这个:

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

请注意,每当您看到表单的查询表达式时,from x in source select x您应该考虑只使用source- 查询表达式不应该盲目使用;弄清楚每一个的意思,然后确定它是否是表达你需要的最合适的方式。

如果你真的想要一个更大的查询,你可能根本不想通过 a 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 回答