3

我有以下情况:一个“对话”实体/表,它有多个与之关联的标签。Tag 也是一个实体/表 - 键/id 是 tagName(一个字符串)。

在客户端(javascript)处理标签时,我使用字符串数组。

现在我想检索具有所有给定标签的所有对话。


输入是字符串数组,输出应该是对话的集合

我试过了:

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)

4

1 回答 1

1

您可以将 c.Tags 投影到标签名称。

我想它会看起来像这样

var conversations = from c in context.Conversations where !c.Tags.Select(tag => tag.Name ).Except(filterTags).Any() select c ;

其中 filterTags 是包含标签名称的字符串列表

于 2012-06-26T08:53:04.803 回答