我使用的是一个ICollectionView,它包含一个对象列表。我需要根据某个对象属性从它获得一个特定的对象,有方法这样做吗?
例如,对象是一个User,我需要提供name来获取这个对象。我该怎么做?
private readonly ICollectionView usersCollectionView;
public MappingViewModelView()
{
_UsersList = new ObservableCollection<User>
{
new User {Name = "Jhon"},
};
usersCollectionView = CollectionViewSource.GetDefaultView(_UsersList);
UsersCollectionView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
}发布于 2014-02-23 14:17:03
从SourceCollection实例中获取ICollectionView并将其转换为特定类型(在您的示例中为用户),您可以使用来获得结果。
User user = usersCollectionView.SourceCollection.Cast<User>()
.FirstOrDefault(p => p.Name == "Jhon");或
使用OfType<T>扩展方法:
User user = usersCollectionView.SourceCollection.OfType<User>()
.FirstOrDefault(p => p.Name == "Jhon");必须添加System.Linq命名空间才能使用Cast和FirstOrDefault扩展方法。
发布于 2014-02-23 14:18:24
使用ICollectionView的ICollectionView属性获取ObservableCollection
User john = ((ObservableCollection<User>)usersCollectionView.SourceCollection).Where( x=> x.Name == "Jhon").FirstOrDefault();https://stackoverflow.com/questions/21969259
复制相似问题