Productクラスの2つ以上のプロパティでソートする必要がある汎用List(Of Product)があります。2つ以上の値の汎用リストをソート
プロダクトクラスには、「人気のある」数字(昇順)、「クリック」の数字(desc)、「名前」の文字列(asc)があります。プロパティに名前を付ける順番で、リストをソートする必要があります。
lambaステートメントでどのようにソートできますか? 1つのプロパティに基づいてリストをソートすることが判明した場合。
Productクラスの2つ以上のプロパティでソートする必要がある汎用List(Of Product)があります。2つ以上の値の汎用リストをソート
プロダクトクラスには、「人気のある」数字(昇順)、「クリック」の数字(desc)、「名前」の文字列(asc)があります。プロパティに名前を付ける順番で、リストをソートする必要があります。
lambaステートメントでどのようにソートできますか? 1つのプロパティに基づいてリストをソートすることが判明した場合。
申し訳ありませんが、C#を知っていますか?
これで必要なものを手に入れることはできますか?
EDITこれはVBの質問でした。ここVB.Netソリューションです。
Dim list = GetSomeList()
Dim sorted = list. _
OrderBy(Function(x) x.Popular). _
ThenBy(Function(x) x.Clicked). _
ThenBy(Function(x) x.Name)
C#バージョンです。 VBは、複数行のラムダ式をサポートしていないとして、ラムダ式に入れるにはあまりにも複雑であるラムダ式、についてのご質問に答えるために、次の
var list = GetSomeList();
var sorted = list.OrderBy(x => x.Popular).ThenBy(x => x.Clicked).ThenBy(x => x.Name);
を試してみてください。非LINQのソリューションについては
:
あなたは比較子として指定されたメソッドが必要になります。
Private Function Comparer(ByVal x As Product, ByVal y As Product) As Integer
Dim result As Integer = x.Popular.CompareTo(y.Popular)
If result = 0 Then
result = x.Clicked.CompareTo(y.Clicked)
If result = 0 Then
result = x.Name.CompareTo(y.Name)
End If
End If
Return result
End Function
使用法:
theList.Sort(AddressOf Comparer)
List<Product> sortedProducts = null;
sortedProducts = products.OrderBy(p => p.Popular)
.ThenByDescending(p => p.Clicked)
.ThenBy(p => p.Name)
.ToList();
華麗!私は "ThenBy"について知らなかった – BrokeMyLegBiking