Entity Framework - Включать только определенные элементы массива свойства массива в HTTP-ответ - PullRequest
0 голосов
/ 03 января 2019

допустим, у меня есть эти классы:

public class Foo {
    public int Id {...}
    public List<Bar> Bars {...}
}

public class Bar {
    public int Id {...};
    public DateTime Date {...};
}

Теперь представьте себе этот GET-запрос:

"/home/foo/1/1" ( [controller]/[action]/[id]/[month] )

Я хочу вернуть конкретный Foo только с Barsс месяца, указанного в URL.

Как бы я это сделал?

Я пробовал что-то подобное, но это не работает:

return await _context.Foo.Include(f => f.Bars.FindAll(b => b.Date.Month == month));

Некоторая помощь здесь была бы очень хороша, спасибо всем.

1 Ответ

0 голосов
/ 04 января 2019

Попробуйте что-нибудь подобное.Предполагается, что у вас есть параметр с именем fooId из запроса.

_context.Foo
    .Where(f => f.Id == fooId)
    .Select(f => new
        {
            Id = f.Id,
            Bars = f.Bars.Where(b => b.Date.Month == month).ToList()
        })
    .ToList()
    .Select(a => new Foo
        {
            Id = a.Id,
            Bars = a.Bars
        })
    .FirstOrDefault()

ПРИМЕЧАНИЕ. Преобразование из анонимного типа обратно в Foo, вероятно, не требуется, если вы просто переходите от этого к JSONсериализации.

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