1

object の ObservableCollection タイプを使用しました。次のコードでフィルターを試しました

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内のアイテムを降順で並べ替えるだけの場合は、 OrderプロパティとAscendingプロパティを使用する必要があります。例えば:

    ...
    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 に答える