问题很简单。我有一个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组以及将它们分离到关系最小的问题。
答案 0 :(得分:0)
找到了解决方案
首先,我这样做:
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);
}
答案 1 :(得分:0)
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));
我没有进行测试,但是只要我正确理解了您想要什么,它应该可以工作。