0

これは小さなミスアテンションの問題かもしれません:

  myColl.OrderByDescending(item => item.myCollItemCreationDate)
.GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
          .Select(res => new ChannelRowUi(res.ToList())
                  {
                      ChannelName = res.Key.ChannelName,
                      ItemType = res.Key.ItemType.ToString() 
                  });

しかし、グループ化が順序を台無しにしたので、私は間違っていたことに気づきました。

私は次のように変更しました:

myColl.GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
      .Select(res => new ChannelRowUi(res.ToList())
              {
                  ChannelName = res.Key.ChannelName,
                  ItemType = res.Key.ItemType.ToString() 
              })
              .OrderByDescending(item => item.myCollItemCreationDate);

しかし、作成日でソートされていない最終結果が得られます。

私が間違っていることは何か分かりますか?

4

3 に答える 3

2
myColl
     .GroupBy(item => new { item.Id, item.ItemType, item.ChannelName })
     .OrderByDescending(item => item.CreationDate)
     .ToList() 
     .Select(res =>

            new ChannelRowUi(res.ToList())
            {
                ChannelName = res.Key.ChannelName,

                ItemType = res.Key.ItemType.ToString()
            })
于 2012-04-16T07:01:38.630 に答える
1

selectとOrderByの順序を変更する必要があると思います。これは関数のチェーンであることを忘れないでください。次の関数は常に、チェーン内の前の関数の結果に基づいて動作します。あなたがorderByを持っているとき、あなたは最後に選択の結果を注文しています。選択では、おそらくすべて同じCreationDateを取得する新しいChannelRowUiオブジェクトを作成していますが、ChannelRowUiコンストラクターを表示していないため、確実に言うことはできません。

于 2012-04-16T07:11:51.280 に答える
0

ToList コマンドを呼び出す必要はないと思います

また、ToListを避けるようにしてください。

ビッグデータがある場合 - ToList を使用するのは間違っています。

遅延実行を使用する必要があります

最初に orderby を実行してから選択する必要があります。

于 2012-04-16T07:01:00.120 に答える