假設我有一個列表:如何整理清單<Entity>?
MyList = new List<MyEntity>();
然後我試着項目添加到列表中。 WCF RIA服務通過異步調用加載的每個項目。 我想MyList總是按MyEntity的屬性排序,說它是ID,添加任何新項目後,
如何解決此問題?
假設我有一個列表:如何整理清單<Entity>?
MyList = new List<MyEntity>();
然後我試着項目添加到列表中。 WCF RIA服務通過異步調用加載的每個項目。 我想MyList總是按MyEntity的屬性排序,說它是ID,添加任何新項目後,
如何解決此問題?
List<T>
不是一個有序的容器,並保持有序的通過調用排序後插入是不是最好的辦法做到這一點。使用由定義排序,而不是一個容器,如基於樹集合或SortedSet
您可以使用
Mylist.Sort();
或
MyList.OrderBy();
也許後者將是你最好指定屬性
MyList.OrderBy(x => x.ID);
正如其他人所說,這不是高效的SortedSet將是更好的選擇,但如果改變類型不是一種選擇,那麼這是一種可能性。
如果使用列表<實體>集合非常重要,那麼您可以使用BinarySearch來定位位置。
int index = MyList.BinarySearch(newMyEntity, yourComparer);
if (index < 0)
MyList.Insert(~index, newMyEntity);
else
// An identical item has been found.
yourComparer是一個的IComparer < myEntity所>的一個實例。如果MyEntity實現了接口Icomparable <MyEntity>,則可以避免它。
請注意,Insert語句效率相當低,期望性能如O(n/2)。
希望這會幫助你在你的追求。
[你有什麼嘗試](http://whathaveyoutried.com)? – Oded
'MyEntity'是什麼樣的?它的定義是什麼? – gideon
尚未嘗試。因爲我無法控制異步完成的順序,所以順序是隨機的。每次運行應用程序時,用戶都會在UI中獲得不同的順序。 – KentZhou