我有以下课程(简化):
public class SeguradoraCalculo
{
public int CodigoSeguradora { get; set; }
public List<Franquia> Franquias{get;set;}
}
public class Franquia {
public int CodFranquia{get;set;}
}
我有以下数据:
var allData = new List<SeguradoraCalculo>(){new SeguradoraCalculo(){
CodigoSeguradora = 11,
Franquias = new List<Franquia>()
{
new Franquia()
{
CodigoFranquia = 1
},
new Franquia()
{
CodigoFranquia = 2
}
}
}
};
var except = new List<SeguradoraCalculo>()
{
new SeguradoraCalculo()
{
CodigoSeguradora = 11,
Franquias = new List<Franquia>()
{
new Franquia()
{
CodigoFranquia = 1
}
}
}
};
我如何获得一个结果,删除与CodigoSeguradora
和CodigoFranquia
匹配的项目,现有的Franquias将被删除,只有当我至少有一个SeguradoraCalculo
时才能获得Franquia
在我的Franquias
列表中?
在这个例子中,我的最终列表是:
CodigoSeguradora = 11,
Franquias = new List<Franquia>()
{
new Franquia()
{
CodigoFranquia = 2
}
}
由于
答案 0 :(得分:2)
首先根据键加入两个集合,然后遍历每个连接对并从第一个中删除第二个中包含的所有项目:
var query = allData.Join(except,
item => item.CodigoSeguradora,
item => item.CodigoSeguradora,
(a, b) => new { a, b });
foreach (var pair in query)
pair.a.Franquias.RemoveAll(f =>
pair.b.Franquias.Select(x => x.CodFranquia).Contains(f.CodFranquia));