Преобразовать список в ObservableCollection - PullRequest
0 голосов
/ 06 мая 2018

Мне нужно преобразовать мой список, полученный из вызова API, в ObservableCollection, чтобы поместить его в мой график.

я попробовал эти 2 метода:

method1:

ObservableCollection<ChartDataModel> test = new ObservableCollection<ChartDataModel>(_CoinHistoryGraph as List<CoinHistoryModel>);

ошибка метода 1:

cannot convert from 'System.Collections.Generic.List<CoinMarketCap.SHARED.Models.CoinHistoryModel>' to 'System.Collections.Generic.List<CoinMarketCap.SHARED.ViewModels.ChartDataModel>'    CoinMarketCap.SHARED    

Метод2:

CoinHistory = _CoinHistoryGraph.Select(x => new ChartDataModel(float.Parse(x.price_btc), double.Parse(x.timestamp)));

ошибка метода 2:

'System.Collections.Generic.IEnumerable<CoinMarketCap.SHARED.ViewModels.ChartDataModel>' to 'System.Collections.ObjectModel.ObservableCollection<CoinMarketCap.SHARED.ViewModels.ChartDataModel>'.

Модель:

 public class GraphModel
{
    public GraphModel(float pricebtc, double time_stamp)
    {
        price_btc = pricebtc;
        timestamp = time_stamp;
    }

    public float price_btc { get; set; }
    public double timestamp { get; set; }
}

  public class CoinHistoryModel
{
    public string name { get; set; }
    public string price_btc { get; set; }
    public string timestamp { get; set; }

}

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Ваш универсальный параметр в new ObservableCollection<T> должен соответствовать универсальному параметру IEnumerable<T> или List<T>, который вы передаете в конструктор. Таким образом, вам нужно передать в List<ChartDataModel>, а не List<GraphModel> или List<CoinHistoryModel>.

0 голосов
/ 06 мая 2018

Чтобы создать ObservableCollection из списка CoinHistoryModel, лучше использовать этот код:

CoinHistory = new ObservableCollection<ChartDataModel>(_CoinHistoryGraph.Select(x => new ChartDataModel(float.Parse(x.price_btc), double.Parse(x.timestamp))));

Ваш первый фрагмент кода не работает, потому что вы хотите создать коллекцию ObservableCollection типа ChartDataModel из коллекции типа CoinHistoryModel.
Что касается вашего второго куска кода, сообщение об ошибке достаточно ясно. Вы хотите явно привести объект IEnumerable к объекту ObservableCollection.
Чтобы создать коллекцию ObservableCollection типа 1 из коллекции типа 1, вы можете передать коллекцию в качестве первого параметра конструктора ObservableCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...