0

こんにちは。お時間を割いていただきありがとうございます。まとめたいリストが2つあります。私の場合、これがどのように可能かわかりません。アイデア?

これは私のコードがどのように見えるかです:

Random rnd = new Random();
                userList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
                userList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();

ご覧のとおり、リスト内の両方の機能を実行できるように、ユーザーリストをユーザーリストに入れたいと思います。全体の概念は、ユーザーリストからユーザーをリストアップしたいということであり、そのうちのいくつかはデータベースからランダムに選ばれ、いくつかはトップ 10 に登録される必要があります。そこに追加された最初のリストは、最新の登録を取得するリストであり、他のリストはユーザーをシャッフルします。

4

3 に答える 3

4

Concat2 つのリストを連結する場合は、linqの拡張メソッドを使用できます。重複が必要ない場合(例で発生する可能性があります)、を使用することをお勧めしますUnion

あなたの例では、リストが によって並べ替えられているため、userCountとの最大値を取るだけで十分です。したがって、この 2 つのリストの和集合は 2 つのうち大きい方に等しくなります。userCountRandom-user.ID

前の質問を念頭に置いて、次のようなものが必要だと思います

userList = userList.OrderBy(user => -user.ID)
                   .Take(userCount)
                   .Union(userList.OrderBy(user => rnd.Next())
                                  .Take(userCountRandom))
                   .ToList();
于 2013-10-16T11:48:23.063 に答える
2

コンキャットを使用できます

userList = userList
   .OrderBy(user => -user.ID)
   .Take(userCount)
   .Concat(
userList
   .OrderBy(user => -user.ID)
   .Take(userCountRandom)
  ).ToList();

または、重複したくない場合は Union を使用します。

userList = userList
       .OrderBy(user => -user.ID)
       .Take(userCount)
       .Union(
    userList
       .OrderBy(user => -user.ID)
       .Take(userCountRandom)
      ).ToList();
于 2013-10-16T11:48:08.480 に答える
0

1 つのリストを別のリストと連結するだけです。

Random rnd = new Random();
var firstUserList = userList.OrderBy(user => -user.ID).Take(userCount).ToList();
var secondUserList = userList.OrderBy(user => -user.ID).Take(userCountRandom).ToList();

var mergedUserList = firstUserList.Concat(secondUserList);
于 2013-10-16T11:47:55.163 に答える