我可以/如何在第三方对象上实现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
}
任何输入/批判性评价都将受到赞赏
谢谢
我不太确定这里有足够的信息来准确诊断问题,但我将尝试一下。我看到两个潜在的问题:
- 您缺少对
System.Linq
或System.Data.DataSetExtensions
的引用。 - 您需要使用
MyList.Cast<Entity>().OrderBy(x => x.CreateDate)
将
DataCollection
转换为正确的类型另外,请注意使用.OrderBy()
而不是.Sort()