Изменение порядка следования идентификаторов, разделенных запятыми - PullRequest
0 голосов
/ 28 мая 2019

У меня есть список объектов, которые я хочу изменить.Порядок определяется в строке.

(я надеюсь, что мой текущий код объясняет лучше, чем текст)

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 голосов
/ 28 мая 2019

Вот пример списка упорядочения на основе другого списка в 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 - это ваш идентификатор (или любое поле, по которому вы хотите отсортировать).

0 голосов
/ 28 мая 2019

При условии, что .Select() произойдет в следующем порядке:

var orderedObjects = order.Split(',').Select(int.Parse).Select(index => objects.FirstOrDefault(obj => obj.id == index).ToList();

0 голосов
/ 28 мая 2019

var data = order.Split (','). ToList ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...