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.OrderBy(orderBy)」の後に「enumerable」が新しいインスタンスであり、ソートされていましたが、「リスト」はそうではありませんでした。
5.次に、並べ替えられた列挙型を「list = enumerable.ToList()」のようにリストにキャストしようとしましたが、両方(「列挙型」と「リスト」)が並べ替えられました。
6.その後、コールスタックが「itemList.Add(item, o => o.Date);」に戻ると、「itemList」がまったくソートされていませんでした!!!
誰でも私にいくつかのアドバイスを与えることができます?ありがとう、looooooooooooooooooooooooooooo!!