ICollectionView 获取特定对象

Jea*_*hhe 1 c# wpf xaml mvvm

我正在使用ICollectionView包含对象列表的 a 。我需要根据某些对象属性从中获取特定对象,有没有办法做到这一点?

例如,对象是 aUser并且我需要提供 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));
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ats 6

SourceCollectionICollectionView实例中获取并将其转换为您的特定类型(在您的情况下为用户),您可以使用 LINQ 扩展方法来获得结果。

User user = usersCollectionView.SourceCollection.Cast<User>()
                 .FirstOrDefault(p => p.Name == "Jhon");
Run Code Online (Sandbox Code Playgroud)

或者

使用OfType<T>扩展方法:

User user = usersCollectionView.SourceCollection.OfType<User>()
                 .FirstOrDefault(p => p.Name == "Jhon");
Run Code Online (Sandbox Code Playgroud)

您必须添加System.Linq命名空间才能使用 Cast 和 FirstOrDefault 扩展方法。