我知道这有点令人困惑,但我试着解释我的问题。
public enum Manufacturer { Bmw, Ford, Volvo };
public class Car
{
public Car(Manufacturer man, string name)
{
this.Man = man;
this.Name = name;
}
public Manufacturer Man { get; set; }
public string Name { get; set; }
}
//Program
private static void Main(string[] args)
{
List<Car> myCars = new List<Car>();
Car a = new Car(Manufacturer.Bmw, "M6");
Car b = new Car(Manufacturer.Ford, "Focus");
Car c = new Car(Manufacturer.Bmw, "i8");
Car d = new Car(Manufacturer.Ford, "Mondeo");
Car e = new Car(Manufacturer.Volvo, "XC60");
myCars.Add(a);
myCars.Add(b);
myCars.Add(c);
myCars.Add(d);
myCars.Add(e);
myCars = myCars.OrderBy(x => x.Man).ToList(); //Not exactly what i need
}
我想按制造商属性对列表进行排序,所以我这样做。
但我真正想要的是,按制造商排序,但随机顺序。 因此,宝马有时会成为第一,有时是福特,但是同时,同一制造商的汽车将是彼此相邻的。
希望我能解释一下。 谢谢你的帮助。
答案 0 :(得分:1)
按制造商对汽车进行分组,然后按随机顺序对组进行排序,并从每个组中选择所有汽车:
var random = new Random();
var result = myCars.GroupBy(c => c.Man)
.OrderBy(g => random.Next())
.SelectMany(g => g);