我正在使用WPF数据网格。我可以使用Linq从数据网格中检索行。
类似的东西:
List<People> people = from products in datagrid1 select products.ToList<People>();
我觉得不对?如果Linq支持datagrid会很棒。
谢谢。
答案 0 :(得分:4)
您应该能够查询datagrid的ItemSource
属性。
答案 1 :(得分: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
- 不应盲目使用查询表达式;弄清楚每个人的意思,然后确定它是否是表达你需要的最合适的方式。
如果实际想要更大的查询,您可能根本不想通过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
,除非它确实代表了一组人 - 在这种情况下,您应该给它一个反映该集合真正含义的名称。)
答案 2 :(得分:1)
试试这个:
List<People> people = (from product in datagrid1.ItemsSource
select product).ToList<People>();