所以我有一个具有类型字符串属性的对象列表.我希望对象按该属性排序.问题如下:List看起来像这样
12 Apple
43 Banana
22 Apple
90 Banana
13 Banana
67 Apple
Run Code Online (Sandbox Code Playgroud)
我希望列表的排序如下:
12 Apple
22 Apple
67 Apple
13 Banana
43 Banana
90 Banana
Run Code Online (Sandbox Code Playgroud)
我正在尝试一下,我试图像这样完成它:
myList.Sort(x, y) => x.Value.Contains("Banana").CompareTo(x.Value.Contains("Banana");
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用.任何人都知道如何做到这一点
您可以使用LINQ:
var orderedFruits = fruitList.OrderBy(f => f.Value).ThenBy(f => f.FruitId);
Run Code Online (Sandbox Code Playgroud)
如果您希望它再次成为列表:
fruitList = orderedFruits.ToList();
Run Code Online (Sandbox Code Playgroud)
好吧,如果字符串属性实际上包含数字和水果名称,那么它会更复杂,最好通过将两个信息存储在单独的属性中来修复您的类.
然而:
var orderedFruits = fruitList
.Select(f => new { arr = f.Value.Split(), OriginalFruit = f })
.Where(x => x.arr[0].Trim().All(char.IsDigit))
.Select(x => new { ID = int.Parse(x.arr[0].Trim()), Fruit = x.arr.Last().Trim(), x.OriginalFruit })
.OrderBy(x => x.Fruit)
.ThenBy(x => x.ID)
.Select(x => x.OriginalFruit);
Run Code Online (Sandbox Code Playgroud)