我有一个列表,其中填充了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; }
}
为清楚起见进行编辑:文本字段永远不会从第二个循环中获取值。它们都显示为空。
答案 0 :(得分:2)
您正在分配一个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;
});
}
答案 1 :(得分:0)
如果您尝试填充DisplayRecord类的text属性,则必须将其添加到列表中,而不必尝试直接将其设置为字符串。
由于我不知道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并将其插入变量文本中。
如果要将单个字符串添加到列表,请使用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表示),则当您尝试添加或访问它时,它将引发错误。
答案 2 :(得分:0)
这应该让您想要:
var displayRecords = ro.serviceHistory.displayRecords
.Select(r=>new DisplayRecord
{
displayDate = r.displayDate,
odometer = r.odometer,
type = r.type,
text = r.text
}).ToList();