c# - 如何从匹配条件的行集中获取不同的值
问题描述
我有一张以下性质的表格。
+----+-----------+-----------+------+---------+------+
| 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"
]
解决方案
您收到错误的原因是您将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();
推荐阅读
- spring-boot - Kotlin Multiplatform 中的 Spring Boot Gradle 依赖项
- cmake - 如何在ubuntu 16.04上下载ignition-cmake2
- flutter - 无法在 IntelliJ 上连接 IOS 模拟器
- c++ - CppSQLite 抛出“LNK2019:未解析的外部符号”错误
- python - dict中的Python字母计数不计数
- c# - 如何在页面对象中指定元素列表而不为每个元素指定一个元素
- python - 将指针从 python var 传递给 c lib
- javascript - ImageStatic的Openlayers切换源导致内存增加约5兆
- c# - Directory.Delete 没有扩展的关闭程序
- python - pycryptodome 中的参数“*”