Как получить группы отношений по наименьшему значению конкретного свойства? - PullRequest
0 голосов
/ 09 июля 2019

Вопрос прост. У меня есть отношение Model1 к Model2 - отношение между ними упорядочено по значению позиции по возрастанию.

если у меня есть, например, что-то вроде этого

Model1ToModel2{Model1Id = 1, Model2Id=1 , Position = 1}
Model1ToModel2{Model1Id = 1, Model2Id=2 ,Position = 2}
Model1ToModel2{Model1Id = 2, Model2Id=1 ,Position = 1}
Model1ToModel2{Model1Id = 2, Model2Id=2 ,Position = 2}

Как я могу превратить его в нечто подобное?

Model1ToModel2{Model1Id = 1, Model2Id=1, Position = 1}
Model1ToModel2{Model1Id = 2, Model2Id=1, Position = 1}

Примечание: Позиция 1 не всегда является началом, связь с позицией 1 может быть удалена, что приводит к Позиции 2, являющейся первым случаем.

Спасибо:)

Редактировать: Пока у меня есть список всех отношений - но я не могу обернуть голову, как разделить группы Model1 и после того, как они разделят получение отношения с наименьшей позицией.

Ответы [ 2 ]

0 голосов
/ 09 июля 2019
relations.GroupBy(r=>r.Model1Id) // This will group your relations by Model1Id
         //If I understood correctly, you want to keep only the ones with the smallest position
         .Select(group=>group.First(r=>r.Postion == group.Min(item=>item.Position));

Я не проверял это, но при условии, что я правильно понял, что вы хотите, Это должно работать.

0 голосов
/ 09 июля 2019

Нашли решение

Сначала я делаю: GroupBy(modelRelation => modelRelation.Model1Id)

Тогда мне как то так:

var newList = new List<T>();
foreach(var group in relations)
{
     var minElement = group.OrderBy(e => e.Position).ToList().FirstOrDefault();
     newList.Add(minElement);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...