gpt4 book ai didi

c# - 使用 LINQ 使用现有数组对列表进行排序

转载 作者:行者123 更新时间:2023-11-30 19:13:24 26 4
gpt4 key购买 nike

class Car{
int ID {get;set;}
string Text {get;set;}
}

List<Car> allCars = new List<Car>(){ new Car{ ID = 1, Text = "one"}, new Car{ ID = 2, Text = "two"}, new Car{ ID = 3, Text = "three"}, new Car{ ID = 4, Text = "four"} };
int[] existingCarIds = new int[]{ 2, 4 };

我想要这份 list 。

CarWithID2
CarWithID4
CarWithID1
CarWithID3

所以我做了:

List<Car> carList = allCars.Where(d => existingCarIds.Contains(d.ID)).Concat(allCars.Where(d => !existingCarIds.Contains(d.ID))).ToList();

是否有任何其他方法可以执行相同的查询?

谢谢

洛伦佐。

最佳答案

使用 OrderBy - 至少,它会更好地显示正在发生的事情:重新排序。

如果您需要按照与数组完全相同的顺序对列表进行排序,请使用

var reordered = allCars.OrderBy(car=>
{
var index = Array.IndexOf(existingCars, car.ID);
return index<0 ? int.MaxValue : index; // put elements that don't have matching ID in the end
});

此查询按 existingCars 数组中的索引排序,数组中没有匹配 id 的元素排在最后。

关于c# - 使用 LINQ 使用现有数组对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3675594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com