在C#对象结构中连接字符串

swi*_*tor 4 c# linq

我有一个如下所示的对象结构:

var Results = new List<ResultObj>()
    {
        new ResultObj()
        {
            Messages = new List<MessageObj>()
            {
                new MessageObj()
                {
                    Message = "message 1"
                },
                new MessageObj()
                {
                    Message = "message 2"
                }
            }
        },
        new ResultObj()
        {
            Messages = new List<MessageObj>()
            {
                new MessageObj()
                {
                    Message = "message 3"
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何使用LINQ或其他C#方法获取单个字符串,并将所有Message值连接在一起?像下面的东西

"消息1,消息2,消息3"

谢谢!

Ali*_*tad 5

使用String.JoinSelectMany:

String.Join(", ", Results.SelectMany(x=> x.Messages).Select(y => y.Message ));
Run Code Online (Sandbox Code Playgroud)


Ahm*_*eed 5

使用该Enumerable.SelectMany方法展平列表,然后使用该String.Join方法.

var query = Results.SelectMany(r => r.Messages)
                   .Select(m => m.Message);
var result = String.Join(", ", query);
Run Code Online (Sandbox Code Playgroud)