为了账号安全,请及时绑定邮箱和手机立即绑定

根据实体框架核心中的不同列选择所有行

根据实体框架核心中的不同列选择所有行

C#
呼啦一阵风 2022-08-20 14:53:34
我有一个包含一些数据的表,我想使用.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.Linq.IGrouping< System.DateTime, Test.API.Models.Records>>'转换为'System.Collections.Generic.IEnumerable<Test.API.Models.Record>'。存在显式转换(您是否缺少强制转换?有没有其他方法可以实现以获得我的期望,或者我在代码中遗漏了一些东西?
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

首先做一个如下:DTO


public class RecordsByDateDTO

{

    public DateTime Date {get; set;}

    public List<Record> Records {get; set;}

}

若要选择具有唯一日期的行,必须按如下方式使用和编写方法:.GroupByGetUniqueRecordsByDate


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;


查看完整回答
反对 回复 2022-08-20
?
慕斯709654

TA贡献1840条经验 获得超5个赞

var rowsToReturn = await _context.Records
            .Where(b => b.SId == bId)
            .Select(d => d.Date)
            .Distinct()
            .OrderBy(d => d)
            .AsEnumerable()
            .ToListAsync();return rowsToReturn;

在 ToListAsync() 之前使用 AsEnumerable()。它会起作用。


查看完整回答
反对 回复 2022-08-20
  • 2 回答
  • 0 关注
  • 72 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信