LINQ Webservice GET список похожих продуктов из файла JSON - PullRequest
1 голос
/ 28 марта 2019

Я загружаю файл JSON из хранилища, в котором хранятся аналогичные продукты. Один продукт может иметь несколько похожих продуктов. То, что я хочу сделать, это прочитать содержимое файла JSON из хранилища (в данном случае код - это имя файла: 458755), выполнить поиск в этом файле соответствующего идентификатора id_product и, если этот идентификатор id_product, если найден, вернуть список похожих продуктов. Это то, что я получил до сих пор:

string uriPath = "https://xxxx.blob.core.windows.net/";

public object GetSimilarProducts(string Code, int id_product)
{
 string secondPart = "api/SimilarProducts/" + Code + ".json";
 var allSimilarProducts = (new WebClient()).DownloadString(uriPath + secondPart);
 object jsonObject = JsonConvert.DeserializeObject(allSimilarProducts);

      var all = allSimilarProducts
      .Where(a => a.id_product == id_product)
      .ToList();

 return all;
}

Это образец содержимого файла SimilarProducts.json: 458755.json

[
  {"id_product":33681,"Brand":"Ikea","Product":"STOCKHOLM Tv-meubel"},
  {"id_product":33681,"Brand":"Ikea","Product":"STOCKHOLM Kast"},
  {"id_product":33685,"Brand":"Ikea","Product":"EKENÄS Fauteuil"}
]

, где это идет не так, с a =>. A_id_product, потому что это обычно читает из таблицы базы данных. Как я смогу сделать это? Поиск в файле JSON и получение всех двух аналогичных продуктов 33681 и вывод их в виде списка?

1 Ответ

1 голос
/ 28 марта 2019

Создайте класс для ваших продуктов, а затем используйте JsonConvert.Deserialize Newtonsoft для десериализации их в список ваших продуктов.

Вот работающий DotNetFiddle и код ниже:

Затем вы можете выполнить свой запрос для ваших результатов:

public List<Products> GetSimilarProducts(string Code, int id_product)
{

    var json =    @"[{ 'id_product':33681,'Brand':'Ikea','Product':'STOCKHOLM Tv-meubel'}, 
                        {'id_product':33681,'Brand':'Ikea','Product':'STOCKHOLM Kast'},
                        { 'id_product':33685,'Brand':'Ikea','Product':'EKENÄS Fauteuil'}]";                         

    (...other)

    var products = JsonConvert.DeserializeObject<List<Products>>(json);

    var all = products.Where(a => a.IdProduct == id_product).ToList();

    return all;

}


public class Products
{
    [JsonProperty("id_product")]
    public int IdProduct {get;set;}

    [JsonProperty("Brand")]
    public string Brand { get; set; }

    [JsonProperty("Product")]
    public string Product { get; set; }
}

Результаты:

enter image description here

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