簡體   English   中英

C# 轉換 IEnumerable <list<string> &gt; 到單個字符串</list<string>

[英]C# convert IEnumerable<List<string>> to a single string

我有一個 Web API 它返回以下數據:

{   
     "code": "Invalid",
     "message": "The following fields are invalid",
     "details": [
        {
             "property": "User",
             "messages": [
                 "FirstName is required",
                 "LastName is required",
             ]
        },
        {
             "property": "User.Gender",
             "messages": [
                 "Incorrect or Invalid"
             ]
        },
        {
             "property": "MarialStatus",
             "messages": [
                 "Cannot be validated"                 
              ]
        },
        {
             "property": "EmployeeId",
             "messages": [
                 "User's employeeId is required"
             ]
        },
}

這是我的 model object:

public class WebApiResponse
{
     public string code { get; set; }
     public string message { get; set; }
     public List<Details> details { get; set; }
}

public class Details
{
     public string property{ get; set; }
     public List<string> messages { get; set; }
}

我想僅將所選“屬性”的“消息”顯示為由新行分隔的單個字符串,因此我可以將字符串添加到 DataTable 行。

例如:我試過這個來獲取“消息”列表

var data = WebApiResponse.details.Where(x => x.property == "User" || x.property == "EmployeeId").Select(x => x.messages);

如何轉換此列表,以便我可以在由換行符分隔的單個字符串中獲取“消息”:

 FirstName is required
 LastName is required
 User's employeeId is required

使用SelectMany代替Select來展平嵌套列表,然后使用 String.Join來連接字符串:

var targets = new[]{"User", "EmployeeId"];
var messages = WebApiResponse.details
                             .Where(x => targets.Contains(x.property))
                             .SelectMany(x => x.messages);

var line = string.Join(Environment.NewLine, messages);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM