как использовать Contains для выбора определенных данных с помощью EntityFramework

#c# #asp.net-mvc #entity-framework

#c# #asp.net-mvc #entity-framework

Вопрос:

Мне нужно составить список с условиями со многими отношениями, и он отлично работает для меня, но теперь я хочу составить список для определенной строки моей базы данных, я пытаюсь использовать Contains , но у меня это не работает, пока я получил это :

 var query = context.anuncio.Where(w =>
                       w.usuarios.cidade.nome_cidade == search.Cidade
                    amp;amp; w.usuarios.regiao.nome_regiao == search.Regiao
                    amp;amp; w.usuarios.cidade.estado.nome_estado == search.Estado
                    amp;amp; w.usuarios.cidade.estado.pais.nome_pais == search.Pais
                    amp;amp; w.categoria_mestre.nome_categoria_mestre == search.CategoriaMestre
                    amp;amp; w.categoria.nome_categoria == search.Categoria
                    amp;amp; search.Pesquisa.Contains(w.titulo_anuncio)
                    amp;amp; w.sub_categoria.nome_sub_categoria == search.SubCategoria).
                    Select(a => new {.....
  

Я пытаюсь выбрать элементы, которые соответствуют моему пользовательскому поиску.

search Объект определяет только строковые свойства:

 public class Search
{
    public string Pais { get { return "Brasil"; }  }
    public string Regiao { get; set; }
    public string Cidade { get; set; }
    public string Estado { get; set; }
    public string CategoriaMestre { get; set; }
    public string Categoria { get; set; }
    public string SubCategoria { get; set; }
    public string Pesquisa { get; set; }


}
  

Значения, которые я передаю в запрос :

 "Regiao":"GRANDE RECIFE",
"Cidade":"Jaboatão dos Guararapes",
"Estado":"PERNAMBUCO",
"CategoriaMestre":"",
"Categoria":"",
"SubCategoria":"",
"Pesquisa":"Iphone"
  

Значения, которые записываются в базу данных :

Когда я делаю запрос со статическими значениями в nome_regiao , nome_cidade , nome_pais , nome_estado у меня есть эти значения!

 "id_anuncio": 4,
"titulo_anuncio": "Vendo Iphone 5s ",
"descricao_anuncio": "Iphone 5s novo desbloqueado",
"imagem1": "2",
"valor_produto": 2500,
"data_publicacao": "2016-10-09T12:36:38.193",
"nome_usuario": "Nathiel Barros",
"num_celular": "8188812011",
"CEP": "54315310",
"nome_regiao": "GRANDE RECIFE",
"nome_cidade": "Jaboatão dos Guararapes",
"nome_estado": "PERNAMBUCO",
"nome_pais": "BRASIL",
"tipo_produto": "NOVO",
"id_usuario": 1
  

И я хочу перечислить все, что связано со словом «iphone» внутри titulo_anuncio

Комментарии:

1. search не может быть typeof string , если он содержит такие свойства, как Cidade , Regiao и т.д. Покажите свои модели.

2. Какое сообщение об ошибке появляется, когда вы говорите, что оно у вас не работает?

3. @CodeNotFound У меня нет возврата!

4. Поскольку search.Pesquisa это string так, почему вы просто не используете amp;amp; w.titulo_anuncio== search.Pesquisa (или вы хотите фильтровать результаты, в которых значение titulo_anuncio содержит некоторые символы Pesquisa ?)

5. @StephenMuecke Точно! Я хочу выполнить поиск по всей таблице всего, что имеет «SearchName» по названию. допустим, это «APPLE IPHONE 6S», и когда я заполняю поисковую строку, я хочу получить что-либо с помощью поиска iphone внутри titulo_anuncio titulo_anuncio

Ответ №1:

 // Contains linq

     var query = context.anuncio.Where(w =>
                   w.usuarios.cidade.nome_cidade.Contains(search.Cidade)
                amp;amp; w.usuarios.regiao.nome_regiao.Contains( search.Regiao)
          )
  

Комментарии:

1. Пожалуйста, объясните свой ответ