我正在使用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));
}
答案 0 :(得分:4)
从 SourceCollection
实例获取 ICollectionView
并将其转换为您的特定类型(在您的情况下为User),您可以使用LINQ扩展方法得到你的结果。
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扩展方法。
答案 1 :(得分:1)
使用 ICollectionView 的SourceCollection属性获取 ObservableCollection
User john = ((ObservableCollection<User>)usersCollectionView.SourceCollection).Where( x=> x.Name == "Jhon").FirstOrDefault();