1

我使用了 ObservableCollection 类型的 object 。我尝试通过以下代码过滤

public ObservableCollectionView<Person> SampleEntries { get; set; }


private void ApplyFilter(int age)
    {
        SampleEntries.Filter = (entry => entry.Age > age ) ;
        // converting ObservableCollection into AsQueryable
        var source = this.SampleEntries.AsQueryable();
        //Shows the value as Destination array was not long enough
        var source1 = source.OrderByDescending(x => x.Id);

    }

应用过滤器后,尝试对列进行排序,它抛出

Exception  : "System.ArgumentException was unhandled by user code" Message=Destination array was not long enough. Check destIndex and length, and the array's lower bounds.

注意:我需要知道为什么这段代码不起作用。我们已经有其他方法来解决这个问题。

更新:ObservableCollectionView可以在MyToolkit库中找到该类。

4

2 回答 2

1

在我看来,ObservableCollectionView并非旨在直接与 Linq 一起使用。如果您只需要按降序对ObservableCollectionView中的项目进行排序,则应使用OrderAscending属性。例如:

    ...
    SampleEntries.Filter = (entry => entry.Age > age ) ;
    SampleEntries.Order= x => x.Id;
    SampleEntries.Ascending = false; 
    ...

如果你真的需要使用 Linq,试试这个:

    ...
    var source = this.SampleEntries.AsQueryable().ToList();
    var source1 = source.OrderByDescending(x => x.Id);
    ...
于 2014-09-16T13:59:56.450 回答
0

你有没有先收藏收藏?

于 2014-09-16T12:51:04.640 回答