如何针对ListCollectionView编写linq查询?

时间:2011-05-26 17:26:16

标签: c# wpf linq mvvm listcollectionview

这些似乎没有做到这一点:

var source = myViewModel.MyListCollectionView.Select(x => x as MyType);
var source = myViewModel.MyListCollectionView.Select<object, MyType>(x => x as MyType);
var source = myViewModel.MyListCollectionView.SourceCollection.Select<object, MyType>(x => x as MyType);

4 个答案:

答案 0 :(得分:26)

ListCollectionView仅实现非通用IEnumerable接口。我怀疑你想要

var source = myViewModel.MyListCollectionView.Cast<MyType>();

或(如果某些值不是MyType,那没关系):

var source = myViewModel.MyListCollectionView.OfType<MyType>();

答案 1 :(得分:7)

var source = myViewModel.MyListCollectionView.OfType<MyType>();

答案 2 :(得分:2)

InternalList属性的类型为IList,因此您可以针对该属性编写linq查询。

答案 3 :(得分:1)

啊,啊,发现了。你必须使用Cast&lt;&gt;第一!

var source = myViewModel.MyListCollectionView.Cast<MyType>().Select(p=>p.MyProperty);