async Task <List <int> > getTagIdFromNames(PostsDto postDto) { var tagNames = postDto.tagNames; // get tag already string sqlGetTag = $"Name IN ('{string.Join("','", tagNames)}')"; var alreadyTags = await _tagRepository.GetList(sqlGetTag); var alreadyTagNames = alreadyTags.Select(t => t.Name).ToList(); // get new tag var newTagsNames = tagNames.Except(alreadyTagNames).ToList(); var newTagIds = new List <int>(); if (newTagsNames.Count > 0) { var tagDtos = new List <TagsDto>(); foreach (var nt in newTagsNames) { tagDtos.Add(new TagsDto() { Name = nt }); } var inputTags = _mapper.Map <List <Tags> >(tagDtos); var tagAdds = await _tagRepository.AddBulk(inputTags); newTagIds = tagAdds.Split(",").Select(t => Convert.ToInt32(t)).ToList(); } // join 2 list id tag var alreadyTagIds = alreadyTags.Select(t => t.Id).ToList(); var result = alreadyTagIds.Concat(newTagIds).ToList(); return(result); }