1.首先我为 IEnumerable.Add() 定义了一个扩展方法,如下面的代码
public static IEnumerable<T> Add<T, TKey>(this IEnumerable<T> enumerable, T value, Func<T, TKey> orderBy)
{
if (enumerable == null)
return null;
if (enumerable is IList<T>)
{
var list = enumerable as IList<T>;
if (!enumerable.Contains(value))
{
list.Add(value);
enumerable = enumerable.OrderBy(orderBy);
}
}
}
2.然后,我提出了这样的扩展方法,以便在将新项目添加到列表时根据“日期”属性对项目列表进行排序:
itemList.Add(item, o => o.Date);
3.毕竟,“itemList”似乎没有排序。
4.我按照扩展方法,发现“enumerable”是在“enumerable = enumerable.OrderBy(orderBy)”之后的一个新实例,并且被排序了,而“list”没有。
5.然后我尝试将排序后的可枚举转换为“list=enumerable.ToList()”之类的列表,它们(“enumerable”和“list”)都已排序。
6.之后,当调用栈回到“itemList.Add(item, o => o.Date);”时,“itemList”根本没有排序!!!
任何人都可以给我一些建议吗?谢谢 looooooooooooooooooooooooooooooooot !