Выбор всех строк на основе отдельного столбца в Entity Framework Core - PullRequest
0 голосов
/ 31 января 2019

У меня есть таблица с некоторыми данными, которые я хочу выбрать строки с уникальными датами, используя базовую структуру сущности .NET.Я хочу вернуть результаты в виде списка уникальных строк.Вот код.

public async Task<IEnumerable<Records>> GetUniqueRecordsByDate(int bId)
{
     var rowsToReturn = await _context.Records
                .Where(b => b.SId == bId)
                .Select(d => d.Date)
                .Distinct()
                .OrderBy(d => d)
                .ToListAsync();
     return rowsToReturn;
} 

Я пытаюсь применить приведенный выше код, но получаю эту ошибку

Невозможно неявно преобразовать тип 'System.Collections.Generic.List > 'до' System.Collections.Generic.IEnumerable '.Существует явное преобразование (вам не хватает приведения?)

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019
var rowsToReturn = await _context.Records
            .Where(b => b.SId == bId)
            .Select(d => d.Date)
            .Distinct()
            .OrderBy(d => d)
            .AsEnumerable()
            .ToListAsync();
return rowsToReturn;

Используйте AsEnumerable () перед ToListAsync ().Это будет работать.

0 голосов
/ 01 февраля 2019

Сначала сделайте DTO следующим образом:

public class RecordsByDateDTO
{
    public DateTime Date {get; set;}
    public List<Record> Records {get; set;}
}

Чтобы выбрать строки с уникальными датами, вы должны использовать .GroupBy и написать свой GetUniqueRecordsByDate метод следующим образом:

public async Task<List<RecordsByDateDTO>> GetUniqueRecordsByDate(int bId)
{
     var recordsByDate = await _context.Records.Where(r => r.SId == bId).GroupBy(r => r.Date)
                              .Select(group => new RecordsByDateDTO
                              {
                                   Date =  group.Key,
                                   Records = group.ToList()
                              }).OrderBy(r => r. Date).ToListAsync();

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