Search all items with LINQ C# WP8.1

时间:2017-04-10 02:04:45

标签: c# json linq

I need to make a query in a JSON. For example the word "Love", will search the entire JSON file and return in a list all the sentences that contain the word "love".

My Classes

 public class CategoriaFrase
 {
     [JsonProperty("Categoria")]
     public string categoria { get; set; }
     public List<Frase> frases { get; set; }
 }

 public class Frase
 {
     public string frase { get; set; }
     public string autor { get; set; }      
 }

My Deserialization code:

 string texto;
 try
 {
      StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///Categorias/Frases.txt"));

      using (StreamReader sRead = new StreamReader(await file.OpenStreamForReadAsync()))
      texto = await sRead.ReadToEndAsync();

      List<CategoriaFrase> pesquis = JsonConvert.DeserializeObject<List<CategoriaFrase>>(texto);

This is the structure of my JSON:

[
  {
    "categoria": "Mensagens de Amizade", 
    "frases": [  
      {
        "frase": "Enquanto alguns escolhem pessoas perfeitas, eu escolho as que me fazem bem.",
        "autor": "Frases S2"
      },
      {
        "frase": "Amizade verdadeira não é ser inseparável. É estar separado, e nada mudar.",
        "autor": "Frases S2"
      },
    }
 "categoria": "Mensagens de Amor",
    "frases": [
       {
        "frase": "Amor não é só beijo e amasso. Amor é cuidado, amor é carinho, amor também é amizade.",
        "autor": "Frases S2"
      },
       {
        "frase": "Amor é isso: querer bem, querer perto, querer ver feliz, querer fazer feliz, querer explicar – e não conseguir – tudo isso que a gente sente.",
        "autor": "Frases S2"
      },

I need to query a certain word inside the JSON and return all the sentences that contain that particular word.


Update - 001 - I added the code but it did not work

2 个答案:

答案 0 :(得分:0)

pesquis.Where(p=>p.frases.frase.Contains("love")).Select(s=>s.frases.frase).ToList();

答案 1 :(得分:0)

此查询应该有效。它返回包含单词&#34; Love&#34;的句子列表。

(from k in pesquis
from l in k.frases
where l.frase.Contains("Love")
select l.frase).ToList()