从逗号分隔的ID重新排序列表

时间:2019-05-28 12:33:13

标签: c# list linq

我有一个要重新排序的对象列表。顺序由字符串确定。

(我希望我当前的代码比文字解释得更好)

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语句或更好的方法可以做到这一点?

3 个答案:

答案 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();