C# 使用Linq连接对象列表中的字符串属性

C# 使用Linq连接对象列表中的字符串属性,c#,linq,C#,Linq,我有一组像这样的对象: class ObjectA { public string NameA {get;set;} public List<ObjectB> ListObjectB {get;set;} } class ObjectB { public string NameB {get;set;} public ObjectBDetails Details {get;set;} } class ObjectBDetails { pub

我有一组像这样的对象:

class ObjectA
{
    public string NameA {get;set;}
    public List<ObjectB> ListObjectB {get;set;}
}

class ObjectB
{
    public string NameB {get;set;}
    public ObjectBDetails Details {get;set;}
}

class ObjectBDetails 
{
    public string Code {get;set;}
    public string Sector {get;set;}
}
string tmp = "";
foreach(var objA in ListObjectA)
{
    foreach(var objB in objA.ListObjectB)
    {
        tmp += objB.ObjectDetails.Sector + ", ";
    }
}
这“会”起作用。唯一的问题是,它总是以一个
结尾,这不太好

但我也认为有一个更好的解决方案可以使用
Linq
来实现这一点。但我不知道怎么做。我试过这样的方法,但显然没有成功:

var a = objA.ListObjectB.Aggregate((current, next) => current.ObjectBDetails.Sector + ", " + next.ObjectBDetails.Sector);
因此,我实际上正在寻找一种方法来使用
Linq
实现这一点。有人知道怎么做吗?

您可以使用和LINQ组合:

var a  = string.Join(", ", ListObjectA.SelectMany(x => x.ListObjectB)
                                      .Select(x => x.Details.Sector));
这是数据的一部分:

var ListObjectA = new List<ObjectA>();
ListObjectA.Add(new ObjectA()
{
    ListObjectB = new List<ObjectB>() { 
        new ObjectB() { Details = new ObjectBDetails() { Sector = "A1" }},
        new ObjectB() { Details = new ObjectBDetails() { Sector = "A2" }},
    }
});
ListObjectA.Add(new ObjectA()
{
    ListObjectB = new List<ObjectB>() { 
        new ObjectB() { Details = new ObjectBDetails() { Sector = "B1" }}
    }
});
var ListObjectA=新列表();
添加(新的ObjectA()
{
ListObjectB=新列表(){
new ObjectB(){Details=new ObjectBDetails(){Sector=“A1”},
new ObjectB(){Details=new ObjectBDetails(){Sector=“A2”},
}
});
添加(新的ObjectA()
{
ListObjectB=新列表(){
new ObjectB(){Details=new ObjectBDetails(){Sector=“B1”}
}
});
生成
“A1、A2、B1”

尝试以下操作:

var a = objA.ListObjectB.Aggregate((current, next) => current.Sector + ", " + next.Sector);

您可以调用tmp=tmp.TrimEnd(“,”)来删除最后一个“,”。在循环中追加字符串时使用StringBuilder类和Append方法也是一个更好的主意。对我来说,这似乎是最优雅的解决方案。如果允许,我会接受的