LINQ按错误排序

时间:2014-10-31 10:22:27

标签: c# linq c#-4.0

我有自定义系列:

public class CustomCollection: ObservableCollection<MyViewModel>
{
    private String _sPError = String.Empty;
    public String SPError
    {
        get { return _sPError; }
        set { _sPError = value; }
    }
}

现在我有一个房产:

public CustomCollection MyCollecionObject
{
}

//Working Fine    
 MyCollecionObject = GetValueFromCollection();// Return Type is CustomCollection

这样可以正常使用,但如果我想使用:

进行排序
//Not Working , Getting the Error
    MyCollecionObject = (GetValueFromCollection()).OrderByDescending(x=>x.StartTime);

我得到以下异常:

  

无法隐式转换类型   'System.Linq.IOrderedEnumerable'到CustomCollection'。

如何使用MyViwModel

中的开始日期对'CustomCollection'进行排序

2 个答案:

答案 0 :(得分:2)

CustomCollectionObservableCollection<T>OrderByDescending的结果是IOrderedEnumerable<T>,不兼容。

ObservableCollection<T>constructor,允许您传入IEnumerable<T>作为来源,以便您可以执行类似

的操作
var orderedCollection = GetValueFromCollection().OrderByDescending(x => x.StartTime);
MyCollectionObject = new CustomCollection(orderedCollection.AsEnumerable());

答案 1 :(得分:1)

作业的右侧不是CustomCollection类型。您需要从LINQ语句返回的IOrderedEnumerable构造一个CustomCollection。