c# - .Net Core API Linq 查询中的多个 Where 条件
问题描述
我一直在编写的 API 包含一个搜索,该搜索应该检查数据库并查看 searchVideoIDs[] 中包含的视频 ID 是否映射到来自 searchTagID[] 的相应标签。例如,视频 1 和视频 2 在数据库中都有 tagID 设置为 3 的条目。
此请求能够获取链接到标签 3 的两个视频 ID 的单个条目,这意味着它http://localhost:5000/api/MapVideoTag/findVideo/?searchTagID=3&searchVideoIDs=1
有效,但...
当两个 ID 在一个 API 调用中传递时,例如http://localhost:5000/api/MapVideoTag/findVideo/?searchTagID=3&searchVideoIDs=1&searchVideoIDs=2
我得到的结果是一个空数组。
对于我的请求为什么没有返回所有值的任何见解,我将不胜感激 - 这是我下面的代码。
[HttpGet("findVideo/{searchTagID?}/{searchVideoIDs?}")]
public ActionResult<IEnumerable<MapVideoTag>> FindVideoTags([FromQuery]string[] searchVideoIDs, [FromQuery]string[] searchTagID)
{
//this item will be used to access the mapped tags
var mappedTagItem = from mappedtag in _context.MapVideoTag select mappedtag;
foreach (string videoID in searchVideoIDs) {
bool verifyVideo = !String.IsNullOrEmpty(videoID);
foreach (string tagID in searchTagID) {
bool verifyTag = !String.IsNullOrEmpty(tagID);
if (verifyTag == true && verifyVideo == true) {
var parsedVideo = int.Parse(videoID);
var parsedTag = int.Parse(tagID);
mappedTagItem = mappedTagItem.Where(v =>
(v.VideoId == parsedVideo)
&&
(v.TagId == parsedTag)
);
}
}
return mappedTagItem.ToList();
}
解决方案
推荐阅读
- javascript - javascript树向特定级别的对象添加新属性
- sql - Oracle SQL 分区范围全部而不是范围单一
- visual-studio - 如何从 Visual Studio 2019 源代码管理身份验证窗口中删除帐户?
- javascript - 获取数值最大的输入元素的输入id
- python - 如何更新通过外键连接的模型中的字段
- c - 将 %d 与 char 一起使用,意外结果
- java - 从 Android Studio 中的不同活动访问布局
- javascript - 用于文本过滤器的 Ag-grid 空白单元格设置
- python - 在 QTableWidget 中搜索
- php - 将 PHP 升级到 8.0 后如何修复 laravel/ui 错误以升级 Laravel