3

ご挨拶!LINQ を使用してオブジェクトのリストをクエリし、それらを列挙値、文字列値で並べ替えてから、同様の方法で並べ替えられた残りのリストを統合したいので、ここでは LINQ 初心者なので、優しくしてください。

//CTOR for my class
MyClass(id, "Name Value Here", Enum.EnumValueHere);

これらのオブジェクトのリストを作成し、Enum.EnumValue[X] を持つすべてのアイテムがリストの最初に表示され、名前でソートされ、その後に同様の方法でソートされた他のすべてのアイテムが続くように、それらを可変的にソートしたいと考えていますの結果セットの SQL)

//What I have so far (only sorts the list)
List<MyClass> = (from s in MyClass orderby s.EnumValue, s.NameValue  select s).ToList();

LINQ Magic を共有できるグルはいますか?

ありがとう!

4

2 に答える 2

10

何を言っているのかよくわかりませんが、このようなものを使用できますか?

// Using Color as enum just to make things clearer
class ClassyClass
{
    public string Name {get; private set;}
    public Color Color {get; private set;}
    public ClassyClass(id, string name, Color color) { ... }
}


var orderedList = collectionOfClassyClasses
            .OrderBy(x => x.Color != Color.Red) // False comes before true
            .ThenBy(x => x.Color)
            .ThenBy(x => x.Name)
            .ToList();

collectionOfClassyClassesある種のClassyClassオブジェクトのコレクションである場合、orderedList色が赤に設定されているすべてのオブジェクトが最初に名前順に並べられ、次に他のすべてが色、次に名前順に並べられるように並べ替えられます。少なくとも私はそうなると思います... テストしていません:p そうでない場合はお知らせください。

于 2009-07-15T14:26:40.877 に答える
0

最初のリストを取得して、ienumerable を取得する list.AddRange() を実行できます。

于 2009-07-15T14:10:35.177 に答える