У меня есть два списка, и я пытаюсь их объединить, и после слияния мой список должен быть в порядке возрастания по рангу.Объединить два списка и упорядочить объединенный список на основе ранга
Код:
public class Test
{
public int TestId { get; set; }
public List<VariantsRank> VariantsRanks { get; set; }
}
public class VariantsRank
{
public int VariantId { get; set; }
public string Name { get; set; }
public int Rank { get; set; }
}
public class Class1
{
public void Process()
{
var List1 = new Test();
List1.TestId = 100;
List1.VariantsRanks.Add(new VariantsRank { VariantId = 10, Name = "V1", Rank = 0 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 11, Name = "V2", Rank = 1 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 12, Name = "V3", Rank = 2 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 13, Name = "V4", Rank = 3 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 14, Name = "V5", Rank = 4 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 15, Name = "V6", Rank = 5 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 16, Name = "V7", Rank = 6 });
List1.VariantsRanks.Add(new VariantsRank { VariantId = 17, Name = "V8", Rank = 7 });
var List2 = new Test();
List2.TestId = 100;
List2.VariantsRanks.Add(new VariantsRank { VariantId = 17, Name = "V8", Rank = 0 });
List2.VariantsRanks.Add(new VariantsRank { VariantId = 15, Name = "V6", Rank = 1 });
List2.VariantsRanks.Add(new VariantsRank { VariantId = 16, Name = "V7", Rank = 2 });
List2.VariantsRanks.Concat(List1.VariantsRanks).GroupBy(x => x.VariantId).SelectMany(x => x.Take(1)).ToList();
}
}
Выход Я получаю:
VariantId = 10, Name = "V1", Rank = 0
VariantId = 11, Name = "V2", Rank = 1
VariantId = 12, Name = "V3", Rank = 2
VariantId = 13, Name = "V4", Rank = 3
VariantId = 14, Name = "V5", Rank = 4
VariantId = 15, Name = "V6", Rank = 5
VariantId = 16, Name = "V7", Rank = 6
VariantId = 17, Name = "V8", Rank = 7
Ожидаемый результат:
Теперь я бы например, для объединения списка 2 и для тех записей, которые соответствуют в списке1, тогда я хотел бы отдать приоритет спискам записей 2, поэтому v8, v6 и v7 списка 2 должны заменить записи списка 1 i.e v6, v7 и v8.
Вы говорите: _expected, если вы увидите, то V8 находится на 5-м положении, потому что его ранг пятой в моей list2_ Но не V8 имеют ранг 0 в список 2? Также все VariantId в списке 2 всегда существует в списке 1? – Magnus
@Magnus: Извините за ошибку.Я обновил свой вопрос –
И если в списке2 нет соответствующего элемента, должен ли он быть включен в конечный результат? Например, если в списке2 был элемент 'v505'? – Magnus