私は問題を説明します:リスト(0,1,2,6,7)をリスト(6,7,0,1,2)にソートしたいのですが、したがって、リスト内のすべてのオブジェクト、つまり4よりも大きいオブジェクトは、小さいものから順に昇順にソートし、次に小さいものから順に昇順にソートする必要があります。C#リスト内の数字をソート
0
A
答えて
2
この比較演算を行います。
public class MyComparer : IComparer<int>
{
public int Divider { get; set; }
public MyComparer(int divider) { Divider = divider; }
public int Compare(int x, int y)
{
if (x < Divider && y > Divider) return 1;
if (x > Divider && y < Divider) return -1;
return x.CompareTo(y);
}
}
そして、あなたはこのコードを実行することができます
List<int> list = new List<int> { 0, 1, 2, 6, 7 };
list = list.OrderBy(i => i, new MyComparer(4)).ToList();
は、それが必要ならば、それは、あなたが値4
そのものを処理する方法を疑問に明確ではありません注意してください6,7
グループの最初のエントリまたは0,1,2
グループの最後のエントリになります。上記の各if()
の不等式比較の1つに、=
が含まれているはずです。
1
LINQとDoably:
using System;
using System.Collections.Generic;
using System.Linq;
internal class Program
{
static void Main(string[] args)
{
List<int> myList = new List<int> { 0, 1, 2, 6, 7 };
var bigger4 = myList // from myList
.Where(item => item > 4) // filter all bigger 4
.OrderBy(i => i) // order them by value ascending
.ToList(); // make list to allow AddRange() later
// I am putting 4rs into this list
var smaller5 = myList // from myList
.Where(item => item <= 4) // filter all smalller equal 4
.OrderBy(i => i); // order them by value ascending
bigger4.AddRange(smaller5); // add to first list
// output as string with , between values:
Console.WriteLine(string.Join(",", bigger4)); // which smaller5 added into bigger4
Console.ReadLine();
}
}
それともExtensionmethodにそれを置く:
internal static class SillyThing
{
static public IList<int>
SortBigger_K_InFrontAnscendingThenAddSmallerEqual_K_Ascending(
this IList<int> list, int K)
{
var biggerK = list
.Where(item => item > K) // filter all bigger K
.OrderBy(i => i) // order them by value ascending
.ToList(); // make list to allow AddRange() later
// I am putting 4rs into this list
var smallerK = list
.Where(item => item <= K) // filter all smalller equal K
.OrderBy(i => i); // order them by value ascending
biggerK.AddRange(smallerK); // add to first list
return biggerK;
}
}
そしてそうのようにそれを呼び出す:
var newList = "1,2,3,4,5,6,7,8,9,0,12,14,16,17,192,222,66,44,22,11".Split(',')
.Select(n => int.Parse(n))
.ToList();
Console.WriteLine(
string.Join(",", newList.
SortBigger_K_InFrontAnscendingThenAddSmallerEqual_K_Ascending(70)));
Console.ReadLine();
免責事項:
@JoelCoehoornのメソッドは、再利用性のためにsmaterです。それは、その特定のSILLYという拡張メソッドを使用しています。
関連する問題
- 1. 文字列と数字でリストをソート
- 2. C#IComparerを使用して英数字リストをソートする
- 3. LINQで整数として文字列リストをソートC#
- 4. ソート内側のリスト
- 5. ソート3dリストvar c#
- 6. Cでリストをソートする
- 7. 文字列のn番目の文字でリストをソートするC#
- 8. 最高の数で文字列のリストをソートする方法
- 9. C#リスト内のリスト
- 10. C++のソート文字列ベクトル
- 11. リスト内の数字をカウントするプロローグ
- 12. 数値に基づいて混合文字列のリストをソート
- 13. jqueryでリストの内容をソート
- 14. リスト内のインデックスでタプルをソート
- 15. C#では、仮数部のリストをソートする方法は?
- 16. 変数のソートC++
- 17. リストに整数を伴う文字列をソート
- 18. リスト内の特定の文字の数
- 19. リスト内の数字のサブセットの合計
- 20. schemeリスト内の数字の合計
- 21. 数字を数字順にソートする -
- 22. マルチセット内のソートされたリストと別のソートされたリストの維持
- 23. C#でリストをソートする方法
- 24. LINQを使用して、リストのリスト内の最大数(C#の)
- 25. Python - リストのリスト内の数字を均等に分割する
- 26. リスト内の文字列の位置を返す関数を書く(Cコード)
- 27. ローマ数字の文字列をソート
- 28. 文字列配列を使用したソート関数 - Cのエラー
- 29. ソート文字列データを数値(ASP.NET C#の)
- 30. ArrayList内の文字列の長さで配列リストをソートする方法
アレイの問題で回転するアイテムと非常によく似ています。 – Shyju
はラムダ式に慣れていて、 'Take()'と 'Skip()'はGoogle検索を行い、自分で試したコードを表示します。これはコードサービスサイトではありません。 – MethodMan
入力の結果はどうなりますか?リスト list = new List {0,4,1,2,4,6,7,4}; '? –
mjwills