簡體   English   中英

如何添加列表<Obect2>列出<Object1>在 C# foreach 循環中?

[英]How do I add a List<Obect2> to List<Object1> in a C# foreach loop?

我有一個列表,其中包含來自 Web 服務的一些 Json。 我可以使用下面的代碼填充 displayRecords。 但是,我無法使用文本字段填充文本字段。 每個 displayRecord 可以有 1 到 n 個文本。

List<DisplayRecord> displayRecords = new List<DisplayRecord>();
foreach (var displays in ro.serviceHistory.displayRecords)
{
    displayRecords.Add(new DisplayRecord
    {
        displayDate = displays.displayDate,
        odometer = displays.odometer,
        type = displays.type                       
    });

    foreach(var texts in ro.serviceHistory.displayRecords)
    {
        texts.text = displays.text;
    }
}

這是 DisplayRecord 類

public class DisplayRecord
{
    public string displayDate { get; set; }
    public string odometer { get; set; }
    public string type { get; set; }
    public List<string> text { get; set; }
}

編輯一些清晰文本字段永遠不會從第二個循環中獲取值。 他們都顯示Null。

在此處輸入圖片說明

您正在分配一個string ,當構造函數“詢問” List<string> ,我認為這會起作用:

List<DisplayRecord> displayRecords = new List<DisplayRecord>();
foreach (var displays in ro.serviceHistory.displayRecords)
{
    displayRecords.Add(new DisplayRecord
    {
        displayDate = displays.displayDate,
        odometer = displays.odometer,
        type = displays.type,                       
        text = displays.text;
    });
}

我看到了一些問題。

如果您嘗試填充 DisplayRecord 類的文本屬性,則必須將其添加到列表中,而不是嘗試將其直接設置為字符串。

因為我不知道ro.serviceHistory.displayRecords.text是否是一個列表,所以我在下面的兩個解決方案中都給出了:

你需要做這樣的事情:

List<DisplayRecord> displayRecords = new List<DisplayRecord>();
foreach (var displays in ro.serviceHistory.displayRecords)
{
    var displayRecord = new DisplayRecord
    {
        displayDate = displays.displayDate,
        odometer = displays.odometer,
        type = displays.type                       
    }

    displayRecord.text.AddRange(displays.text);

    displayRecords.Add(displayRecord);
}

AddRange() 將獲取一個 List 並將其插入到變量 text 中。

如果您想將單個字符串添加到列表中,請改用 Add()。

List<DisplayRecord> displayRecords = new List<DisplayRecord>();
foreach (var displays in ro.serviceHistory.displayRecords)
{
    var displayRecord = new DisplayRecord
    {
        displayDate = displays.displayDate,
        odometer = displays.odometer,
        type = displays.type                       
    }

    displayRecord.text.Add(displays.text);

    displayRecords.Add(displayRecord);
}

警告

如果您有一個 uninstantiatedList(說 null 而不是 Count=0),那么當您嘗試添加或訪問它時,它會拋出錯誤。

這應該讓你想要你想要的:

var displayRecords = ro.serviceHistory.displayRecords
  .Select(r=>new DisplayRecord
    {
      displayDate = r.displayDate,
      odometer = r.odometer,
      type = r.type,
      text = r.text
    }).ToList();

暫無
暫無

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

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