2014-02-23 88 views
0

我正在使用包含對象列表的ICollectionView。 我需要根據某些 對象屬性從它獲取特定對象,有沒有辦法做到這一點?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)); 
} 
+1

後的示例代碼。 –

+0

@ RohitVats-完成 –

回答

4

ICollectionView例如獲取SourceCollection,並投放到特定類型的(在你的情況下用戶),你可以使用LINQ擴展方法來獲取你的結果。

User user = usersCollectionView.SourceCollection.Cast<User>() 
       .FirstOrDefault(p => p.Name == "Jhon"); 

OR

使用OfType<T>擴展方法:

User user = usersCollectionView.SourceCollection.OfType<User>() 
       .FirstOrDefault(p => p.Name == "Jhon"); 

您必須添加System.Linq命名空間中使用投放和FirstOrDefault擴展方法。

+1

我不知道Cast ,看起來很方便。 – Florian

1

使用ICollectionViewSourceCollection屬性來獲取的ObservableCollection

User john = ((ObservableCollection<User>)usersCollectionView.SourceCollection).Where(x=> x.Name == "Jhon").FirstOrDefault();