首页 > 解决方案 > .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();
              }

标签: c#asp.netentity-frameworklinqsearch

解决方案


推荐阅读