我有一张具有以下性质的表。
DataSource
我希望使用Entity Framework获得与Json不同的+----+-----------+-----------+------+---------+------+
| 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
当我使用参数击中此端点时, // 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();
}
我希望Json响应为
/163/2019/2
答案 0 :(得分:1)
出现错误的原因是因为您对仅包含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();