【发布时间】:2019-01-29 16:28:55
【问题描述】:
我与IEnumerable 的myObjects 一起工作。那些myObjects 由App.config 和其他XML 文件设置。
我将配置加载到每个文件的对象模型中,然后将内容添加到myObjects。所以我只想将对象模型合并到一个中。
myObjects 包含 IEnumerable 的 myObjectChild 和 myObjectChild 包含 IEnumerable 的 myObjectChildChild。
我有点迷失在所有这些IEnumerable 中并且不知道如何合并它。
这里是类:
public class MyObject
{
public string Name { get; set; }
public IEnumerable<MyObjectChild> MyObjectChilds { get; set; }
}
public class MyObjectChild
{
public string Name { get; set; }
public IEnumerable<MyObjectChildChild> MyObjectChildChilds { get; set; }
}
public class MyObjectChildChild
{
public string Name { get; set; }
public string Value { get; set; }
}
/////////////////////////////////////// ////////////////////////////
编辑 ////
class Program
{
static void Main(IEnumerable<MyObject> myObjects)
{
List<MyObject> objectConfigList = new List<MyObject>();
foreach (var myO in myObjects)
{
if (objectConfigList.Any(a => a.Name == myO.Name))
{
Console.WriteLine("myO already in the list: " + myO.Name);
Console.WriteLine("Check current myO.myOC");
List<MyObjectChild> myOChild = myO.MyObjectChilds.ToList();
foreach (var myOC in myOChild)
{
if (objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Any(s => s.Name == myOC.Name))
{
Console.WriteLine("myOC already in the myO: " + myOC.Name);
List<MyObjectChildChild> tempmyOCC = myOC.MyObjectChildChilds.ToList();
Console.WriteLine("Check current myOC.myOCC");
foreach (var myOCC in tempmyOCC)
{
if (objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Where(myOCt => myOCt.Name == myOC.Name).First().MyObjectChildChilds.Any(p => p.Name == myOCC.Name))
{
Console.WriteLine("myOCC already defined in this myOCction: " + myOCC.Name);
}
else
{
objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.Where(myOCc => myOCc.Name == myOC.Name).First().MyObjectChildChilds.ToList().Add(myOCC);
}
}
}
else
{
objectConfigList.Where(a => a.Name == myO.Name).First().MyObjectChilds.ToList().Add(myOC);
}
}
}
else
{
objectConfigList.Add(myO);
}
}
}
}
我找到了一个解决方案,因为我没有成功。
我在这里发布我的解决方案,如果您有任何改进建议,我会很高兴阅读它!
感谢您的帮助。
【问题讨论】:
-
你能显示一些代码吗?
-
使用 Distinct()。
-
从问题的描述我们只能猜测你的问题是什么。继续阅读How to Ask 并发布minimal reproducible example 以获得任何帮助。
-
对不起,这是我的第一篇文章,我有点迷茫。我已经添加了类,我使用 IEnumerable
并希望合并所有 MyObject 而不会丢失任何 MyObjectChildChild -
你正在尝试加入这两个集合,stackoverflow.com/questions/14164974/… ?如果一个项目可以出现在两个列表中,但不应该出现在结果输出中,那么你将不得不使用 IEquatable 然后你可以将它们合并在一起。
标签: c# linq ienumerable