1

次のコードを使用して、匿名タイプのソート済みリストにデータを入力しました。

var list = service.GetTenantsOverview()
                  .TenantsOverview
                  .Cast<TenantOverview>()
                  .Select(t => new { t.TenantId, t.Tenantnumber })
                  .OrderBy(t => t.Tenantnumber)
                  .ToList();

問題は、3番目のアイテムを1番目の位置に移動する必要があるということです。つまり、テナント番号「Any」を1番目の位置に移動したいと思います。しかし、それを行うための適切な方法は見つかりませんでした。

生成およびソートされた匿名タイプリスト

解決策として、以下のコードを作成しました。

var item = list.First(f => f.Tenantnumber == "Any");
        list.Remove(item);
        list.Insert(0, item);

これは正常に動作します。 私の問題の解決策

1つのステートメントでLINQを使用して上記の作業を行う方法を知りたいですか?または、単一のステートメントでそれを行うことは可能ですか?

4

2 に答える 2

1

テナント番号が「Any」かどうかで最初の順序を試してください (デフォルトでfalseは が前に来るtrueので、降順にする必要があることに注意してください)。

busConfigurationService.GetTenantsOverview()
                       .TenantsOverview
                       .Cast<TenantOverview>()
                       .Select(t => new { t.TenantId, t.Tenantnumber })
                       .OrderByDescending(t => t.Tenantnumber == "Any")
                       .ThenBy(t => t.Tenantnumber)
                       .ToList()
于 2013-02-17T05:50:33.390 に答える
1

OrderBy を使用してから ThenBy を使用する

yourCurrentQuery.OrderBy(t => t.Tenantnumber == "Any" ? 0 : 1)
                .ThenBy(t => t.Tenantnumber);

アニの答えは、ほとんど同じ手法を示しており、確かに機能します。ただし、すぐに直感的ではないため、通常、順序付けにブール値に依存することは好みません。すべての人が同じハングアップを共有するとは思いません。

于 2013-02-17T05:50:55.510 に答える