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

如何从匹配条件的行集中获取不同的值

如何从匹配条件的行集中获取不同的值

C#
料青山看我应如是 2022-06-12 11:15:29
我有一张以下性质的表格。+----+-----------+-----------+------+---------+------+| Id | AccountId | ProjectId | Year | Quarter | Data |+----+-----------+-----------+------+---------+------+| 39 |       163 |        60 | 2019 |       2 |    0 || 40 |       163 |        60 | 2019 |       2 |    8 || 41 |       163 |        61 | 2019 |       2 |    1 || 42 |       163 |        61 | 2019 |       2 |    2 |+----+-----------+-----------+------+---------+------+我想ProjectIds使用 Entity Framework 与 Json 不同,到目前为止我的代码看起来像这样。    // GET: api/Insight/163/2019/2    [HttpGet("{accid}/{year}/{qurter}")]    public async Task<IActionResult> GetSurveys([FromRoute] long accid, [FromRoute] long year, [FromRoute] long qurter)    {        //This code gives me the error.        return await _context.CustomerSatisfactionResults.Select(x=>x.ProjectId)            .Where(x => x.AccountId == accid && x.Year == year && x.Quarter == qurter).ToListAsync();    }当我用参数点击这个端点时,/163/2019/2我想要一个 Json 响应,[  "60", "61"]但我收到以下错误。我做错了什么?
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您收到错误的原因是您将Where条件应用于仅包含 的投影序列ProjectId。你应该使用Where之前Select

要获取不同的值,请使用以下Enumerable.Distinct方法:

return await _context.CustomerSatisfactionResults
   .Where(x => x.AccountId == accid && x.Year == year && x.Quarter == qurter)
   .Select(x => x.ProjectId)
   .Distinct()
   .ToListAsync();


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

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