我可以/如何在第三方对象上实现IEnumerable来排序…只需使用LINQ

本文关键字:排序 LINQ IEnumerable 实现 第三方 对象 我可以 | 更新日期: 2023-09-27 18:05:19

我的最后两个问题已经被否决了,所以如果这是一个愚蠢的问题并且浪费了你的时间,我提前道歉。

我想在一个名为CreateDate的属性上排序一个集合,所以我想我会这样做:

MyList.Sort(x => x.CreateDate)

然而,MyList. sort()是不可用的,因为MyList是一个Microsoft DataCollection对象,不实现IEnumerable。

来自元数据的Microsoft DataCollection如下:

public class DataCollection<T> : Collection<T>
{
    public void AddRange(IEnumerable<T> items);
    public void AddRange(params T[] items);
    public T[] ToArray();
}

所以我能想到的只有两个选项:

使用Linq something:

var query = from xyz in self.Entities
   orderby xyz.Attributes["CreateDate"]
   select xyz;

或转换为列表,但随后我必须创建一个比较器,我不确定如何在没有迭代整个事情和重建DataCollection的情况下获得它。

List<Entity> x = self.Entities.ToList();
x.Sort(y => y.Attributes["CreateDate"], comparer)
foreach(var x in x)
{
  //iterate and rebuild the DataCollection
}

任何输入/批判性评价都将受到赞赏

谢谢

我可以/如何在第三方对象上实现IEnumerable来排序…只需使用LINQ

我不太确定这里有足够的信息来准确诊断问题,但我将尝试一下。我看到两个潜在的问题:

  1. 您缺少对System.LinqSystem.Data.DataSetExtensions的引用。
  2. 您需要使用MyList.Cast<Entity>().OrderBy(x => x.CreateDate)
  3. DataCollection转换为正确的类型

另外,请注意使用.OrderBy()而不是.Sort()