我有一个要重新排序的对象列表。顺序由字符串确定。
(我希望我当前的代码比文字解释得更好)
List<DataObject> objects = GetDataObjectsFromDatabase();
string order = "1,3,2";
List<DataObject> orderedObjects = new List<DataObject>
foreach(string index in order.Split(',')
{
orderedObjects.Add(objects.FirstOrDefault(x => x.id == index));
}
是否只有一个Linq语句或更好的方法可以做到这一点?
答案 0 :(得分:0)
以下是基于linq中另一个列表的排序列表示例:
List<OBJ> Test = new List<OBJ>();
Test.Add(new OBJ(1));
Test.Add(new OBJ(2));
string Order = "1,2,3";
List<string> OrderBy = Order.Split(new char[] { ',' }).ToList();
Test = Test.OrderBy(x => OrderBy.IndexOf(x.Field1.ToString())).ToList();
Console.ReadKey();
假设x.Field1是您的ID(或您要作为排序依据的任何字段)。
答案 1 :(得分:0)
提供了.Select()
的顺序:
var orderedObjects = order.Split(',').Select(int.Parse).Select(index => objects.FirstOrDefault(obj => obj.id == index).ToList();
答案 2 :(得分:-1)
var data = order.Split(',')。ToList();