我想知道如何从列表中选择多个相同类型的值...
更具体一点:
public class price
{
public string NAME { get; set; }
public string PRICE { get; set; }
public string TIMESTAMP { get; set; }
}
这是我的名单价格。现在我想要例如,如果这是我的json输出发送到列表:
{
"Products": [[{
"NAME": "Shirt",
"PRICE": "25.0",
"TIMESTAMP": "2018-03-19 06:58:24"
}
], [{
"NAME": "Pants",
"PRICE": "30.0",
"TIMESTAMP": "2018-03-19 06:58:16"
}
], [{
"NAME": "Shirt",
"PRICE": "20.0",
"TIMESTAMP": "2018-03-19 06:58:17"
}
]]
}
所以我想从特定名称返回值,比如Shirt。当我选择衬衫时,我想要的值:25.0 - 20.0。然后我想要创建一个图表,其中包含NAME = Shirt order中所有值的第一个最早的值(如图表)。 我从一个链接收到一个json,解析它并把它放在一个像这样的列表中:
string link = @"http://*****/getprices.php";
string json = new WebClient().DownloadString(link);
var jObject = JObject.Parse(json);
var pricePropery = jObject["Prices"] as JArray;
List<price> PriceList = new List<price>();
foreach (var property in pricePropery)
{
var propertyList = JsonConvert.DeserializeObject<List<price>>(property.ToString());
PriceList.AddRange(propertyList);
}
问题是json有几次相同的NAME只有不同的PRICE和TIMESTAMP,所以我想选择价值的所有价格&#34; NAME&#34;并使用上面的TIMESTAMP按最旧的价格对其进行排序。
现在我想通过使用微图来制作图表。要创建图表,您必须执行以下操作:
PriceChart.Chart = new PointChart { Entries = Source };
所以我更换了&#34; Source&#34;通过PriceList,但那不会起作用。
那么我该怎么做...
编辑:当我使用此代码时:
var singleNameWithOldestPrice =
from p in pricePropery
group p by p.NAME into grp
select grp.OrderBy(a => a.TIMESTAMP ).First();
我应该如何使用它作为图表的来源,因为这不起作用:
PriceChart.Chart = new PointChart { Entries = singleNameWithOldestPrice };
我无法将List转换为PointChart的源。
请告诉我!
答案 0 :(得分:0)
你想要的只是
var singleNameWithOldestPrice =
from p in pricePropery
group p by p.NAME into grp
select grp.OrderBy(a => a.TIMESTAMP ).First()