我有一个看起来像这样的对象列表:
public class Hub
{
public string Stamp { get; set; }
public string Latency0 { get; set; }
public string Latency1 { get; set; }
public string Latency2 { get; set; }
public string Latency3 { get; set; }
public string Latency4 { get; set; }
}
将列表转换为Json后,如下图所示。
如何将列表转换为图像中显示的数组?我应该能够创建一个C#数组,然后将其进一步转换为图像中所示的Json数组。
我尝试在列表中使用此ToArray()
,但它只会将其转换为对象数组。
答案 0 :(得分:1)
source.Select(x => new string[]{
x.Stamp, x.Latency0, x.Latency1,
x.Latency2, x.Latency3, x.Latency4})
.ToArray();
答案 1 :(得分:1)
Aomine是正确的,但是如果要以双精度数组(或实际上为可为空的双精度数组)的形式获取结果,则需要执行以下转换:
double temp;
source.Select(x => new string[]{
x.Stamp, x.Latency0, x.Latency1, x.Latency2, x.Latency3, x.Latency4}
.Select(n => double.TryParse(n, out temp) ? temp : (double?)null))
.ToArray();
答案 2 :(得分:1)
如果可以将值保持为字符串,Aomine的答案很好。但是,您的屏幕快照似乎暗示您实际上需要将这些值转换为数字。由于这些可以有小数并且可以为空,因此decimal?
是您需要的类型。
首先创建此辅助方法:
decimal? ParseOrNull(string value)
{
decimal numericValue;
return decimal.TryParse(value, out numericValue) ? numericValue : (decimal?)null;
}
然后:
hubs.Select(h =>
new [] { h.Stamp, h.Latency0, h.Latency1, h.Latency2, h.Latency3, h.Latency4 }
.Select(ParseOrNull).ToArray())
.ToArray()