我有以下课程(简化的):
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
}
}
谢谢
首先根据密钥加入两个集合,然后遍历每个加入的配对,并从第一个中删除第二个中包含的所有项目:
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));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句