请教一个List合并的算法问题

plcly1 plcly1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个类,如下所示,现在有两个的List<A>,里面Name一样的合并一起,B下面DES如果一样的就不添加,如果不一样就添加。
 public class A
{
public string Name { get; set; }
public List<B> BS { get; set; }
}
public class B
{
public string DES { get; set; }
}

[/color]

我写了个多重循环的方法,想知道有没有可以优化的,坐等大神。

 private static List<A> listA;
private static List<A> listA1;
private static List<A> listA2;
static void Main(string[] args)
{
Init();
listA = CombineA(listA, listA1);
listA = CombineA(listA, listA2);
Console.ReadKey();
}
static List<A> CombineA(List<A> a1, List<A> a2)
{
bool bUnequal = true;
bool bDetailUnequal = true;
for (int i = 0; i < a2.Count; i++)
{
bUnequal = true;
for (int j = 0; j < a1.Count; j++)
{
if (a1[j].Name == a2[i].Name)
{
bUnequal = false;
for (int k = 0; k < a2[i].BS.Count; k++)
{
bDetailUnequal = true;
for (int l = 0; l < a1[j].BS.Count; l++)
{
if (a1[j].BS[l].DES == a2[i].BS[k].DES)
{
bDetailUnequal = false;
}
}
if (bDetailUnequal)
{
a1[j].BS.Add(a2[i].BS[k]);
}
}
}
}
if (bUnequal)
{
a1.Add(a2[i]);
}
}
return a1;
}
static void Init()
{
listA = new List<A>
{
new A
{
Name="a",BS=new List<B>
{
new B{DES="a1"},
new B{DES="a2"}
}
}
};
listA1 = new List<A>
{
new A
{
Name="b",BS=new List<B>
{
new B{DES="b1"},
new B{DES="b2"}
}
},
new A
{
Name="c",BS=new List<B>
{
new B{DES="c1"},
new B{DES="c2"}
}
}
};
listA2 = new List<A>
{
new A
{
Name="c",BS=new List<B>
{
new B{DES="b1"},
new B{DES="c2"}
}
},
new A
{
Name="a",BS=new List<B>
{
new B{DES="c1"},
new B{DES="c2"}
}
}
};
}

}
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
plcly1
C# 111,128 成员 642,537 内容