32

オブジェクトのリストがあり、DateTimeOffset新しいオブジェクトを順番にリストに挿入したいと思います。

List<DateTimeOffset> TimeList = ...
// determine the order before insert or add the new item

申し訳ありませんが、私の質問を更新する必要があります。

List<customizedClass> ItemList = ...
//customizedClass contains DateTimeOffset object and other strings, int, etc.

ItemList.Sort();    // this won't work until set data comparison with DateTimeOffset
ItemList.OrderBy(); // this won't work until set data comparison with DateTimeOffset

また、 ?DateTimeOffsetのパラメータとしてどのように置く.OrderBy()

私も試しました:

ItemList = from s in ItemList
           orderby s.PublishDate descending    // .PublishDate is type DateTime
           select s;

ただし、このエラーメッセージが返されます。

タイプ「System.Linq.IOrderedEnumerable」を「System.Collections.Gerneric.List」に暗黙的に変換することはできません。明示的な変換が存在します(キャストがありませんか?)

4

9 に答える 9

73

リストがすでに昇順でソートされていると仮定します

var index = TimeList.BinarySearch(dateTimeOffset);
if (index < 0) index = ~index;
TimeList.Insert(index, dateTimeOffset);
于 2012-08-29T06:59:11.017 に答える
14

.NET 4 を使用すると、新しいものを使用できSortedSet<T>ます。そうしないと、キー値コレクションに固執しますSortedList

SortedSet<DateTimeOffset> TimeList = new SortedSet<DateTimeOffset>();
// add DateTimeOffsets here, they will be sorted initially

注:SortedSet<T>クラスは重複する要素を受け入れません。item が既にセット内にある場合、このメソッドは false を返し、例外をスローしません。

重複が許可されている場合は、 aList<DateTimeOffset>を使用してそのSortメソッドを使用できます。

于 2012-08-29T06:59:45.460 に答える
4

LINQ を変更し、最後に ToList() を追加します。

ItemList = (from s in ItemList
            orderby s.PublishDate descending   
            select s).ToList();

または、ソートされたリストを別の変数に割り当てます

var sortedList = from s in ....
于 2012-08-29T08:00:05.800 に答える
1

アイテムを特定のインデックスに挿入するには

あなたが使用することができます:

DateTimeOffset dto;

 // Current time
 dto = DateTimeOffset.Now;

//This will insert the item at first position
TimeList.Insert(0,dto);

//This will insert the item at last position
TimeList.Add(dto);

コレクションを並べ替えるには、linq を使用できます。

//This will sort the collection in ascending order
List<DateTimeOffset> SortedCollection=from dt in TimeList select dt order by dt;
于 2012-08-29T06:44:48.143 に答える
-2

Insert(index,object)必要なインデックスを見つけて使用できます。

于 2012-08-29T06:45:59.517 に答える