我正在使用 WPF 数据网格。我可以使用 Linq 从数据网格中检索行吗?
就像是 :
List<People> people = from products in datagrid1 select products.ToList<People>();
我觉得不对吧?如果 Linq 支持 datagrid 那就太好了。
谢谢你。
您应该能够查询ItemSource
数据网格的属性。
我怀疑您遇到的问题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
为,除非它确实代表了一群人——在这种情况下,您可能应该给它一个反映该集合真正含义的名称。)
尝试这个:
List<People> people = (from product in datagrid1.ItemsSource
select product).ToList<People>();