WebApi Lambda с DataModel и Entitiy - PullRequest
0 голосов
/ 20 марта 2019

У меня есть WebAPI, который я создаю, который возвращает все значения при вызове /api/mediareleases, но я хочу добавить QueryString, чтобы я мог получить более конкретные данные.

Модель данных

public partial class PressReleases
{
    public int ID { get; set; }
    public string PostDateShown { get; set; }
    public string ShortDescription { get; set; }
    public string FileName { get; set; }
}

Контроллер

public IEnumerable<PressReleases> Get()
{
    using (MediaReleasesEntities entities = new MediaReleasesEntities())
    {
        //returns every release
        return entities.PressReleases.ToList();
    }
}

public PressReleases Get(string criteria)
{
    using (MediaReleasesEntities entities = new MediaReleasesEntities())
    {
        try
        {
            //try to convert it to date
            DateTime dt = DateTime.Parse(criteria);

            //do something    
        }
        catch
        {
            //search by description
            return entities.PressReleases.FirstOrDefault(e => e.ShortDescription.Contains(criteria)); 
        }
    }
}

Я хочу либо получить дату и выполнить поиск по дате, либо выполнить поиск в описании по ключевому слову.В настоящее время это работает, но я возвращаю только одно значение.Я пытался использовать Select() или All() в моей лямбде, но это только возвращает синтаксические проблемы.Как я могу вернуть каждый релиз, содержащий мои критерии (слово «встреча»)?

1 Ответ

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

FirstOrDefault как следует из названия вернет первую найденную запись или ноль

Чтобы вернуть все результаты, вы должны использовать приведенный ниже оператор LINQ

return entities.PressReleases.Where(e => e.ShortDescription.Contains(criteria)).ToList(); 

.Where(), чтобы указать наш фильтрусловие и .ToList() для выполнения в нашей базе данных и возврата результатов

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

public List<PressReleases> Get(string criteria)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...