Как мне написать запрос linq против 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 ответа

Решение

ListCollectionView реализует только неуниверсальный IEnumerable интерфейс. Я подозреваю, что вы хотите:

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

или (если некоторые значения не будут MyTypeи ничего страшного)

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

InternalList свойство типа IList так что вы сможете написать linq запрос против этого.

Ааааа нашел это. сначала вы должны использовать Cast<>!

var source = myViewModel.MyListCollectionView.Cast<MyType>().Select(p=>p.MyProperty);
Другие вопросы по тегам