C#Xamarin从列表

时间:2018-03-28 13:40:34

标签: c# list xamarin charts xamarin.android

我想知道如何从列表中选择多个相同类型的值...

更具体一点:

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的源。

请告诉我!

1 个答案:

答案 0 :(得分:0)

你想要的只是

var singleNameWithOldestPrice = 
    from p in pricePropery
    group p by p.NAME into grp
    select grp.OrderBy(a => a.TIMESTAMP ).First()