API, который я писал, включает в себя поиск, который должен проверять базу данных и видеть, сопоставлены ли идентификаторы видео, включенные в searchVideoIDs [], с соответствующими тегами из searchTagID []. Например, видео 1 и видео 2 имеют записи в базе данных, где tagID имеет значение 3.
Этот запрос может извлечь отдельную запись для обоих идентификаторов видео, связанных с тегом 3, что означает, что http://localhost:5000/api/MapVideoTag/findVideo/?searchTagID=3&searchVideoIDs=1
работает, но ...
Когда оба идентификатора передаются в одном вызове 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();
}