我有以下情况: 一个“对话”实体/表,它有多个与之关联的标签。 Tag也是一个实体/表 - 键/ id是tagName(一个字符串)。
在客户端(javascript)我处理标签时使用字符串数组。
现在我想要检索所有包含所有给定标记的会话。
输入是一个字符串数组,输出应该是Conversations的集合
我试过了:
var filterTags = new List<EFModels.Tag>();
foreach (var tagName in tags)
{
filterTags.Add(new EFModels.Tag() { Name = tagName});
}
var conversations = from c in context.Conversations where !c.Tags.Except(filterTags).Any() select c ;
问题是:Unable to create a constant value of type 'EFModels.Tag'. Only primitive types or enumeration types are supported in this context
- 这是有道理的。
现在我该如何选择?什么是最好的方法? (我仍然想使用linq而不是写sql select)
答案 0 :(得分:1)
您可以将c.Tags投影到标记名称。
我猜它会是那样的
var conversations = from c in context.Conversations where !c.Tags.Select(tag => tag.Name ).Except(filterTags).Any() select c ;
其中filterTags是包含标记名称的字符串列表