我正在尝试确定变量是否已存在,因此我不会创建重复项。但我不断收到错误:
无法从System.Linq.IQueryable转换
以下是导致错误的代码:
public List<QuestionTag> ParseTags(string tags)
{
var tagList = tags.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
var questionTags = new List<QuestionTag>();
var anyNewTags = false;
foreach (var tag in tagList)
{
var tagExists = _context.Tags.Where(x => x.Name == tag);
if (tagExists == null)
{
var newTag = new QuestionTag() { Tag = new Tag() { Name = tag } };
_context.QuestionTags.Add(newTag);
questionTags.Add(newTag);
anyNewTags = true;
}
else
{
questionTags.Add(tagExists); // ERROR OCCURS HERE
}
}
if (anyNewTags) _context.SaveChanges();
return questionTags;
}
答案 0 :(得分:1)
你的tagExists查询还没有产生结果,因此错误。为了使其产生,请使用.ToList(),First()或FirstOrDefault()。
假设它产生一个列表,那么使用:
questionTags.AddRange(tagExists.ToList());
假设它产生一个对象,那么使用:
questionTags.Add(tagExists.First());
======编辑=======
您的问题标记属于List<QuestionTag>
类型,但是当您添加tagExists
时,此类型为Tags
。
所以改变这个,
var tagExists = _context.Tags.Where(x => x.Name == tag).Select(x => new QuestionTag { Tag = new Tag { Name = x.Name} }).FirstOrDefault();