得到了Linq嵌套查询错误-有任何解决方法吗?

时间:2019-05-09 13:18:10

标签: c# asp.net linq linq-to-entities

我有一个字符串,可以将其转换为二维数组以进行Linq查找。

var searchWords = "one two three | four five six";

var groups = searchWords.Split('|')
    .Select(x => x.Split())
    .ToArray();

然后,我查询我的Entity Framework表之一-这个想法是我要搜索至少一个组中与所有三个单词(以任何顺序排列)匹配的行。

所以"three one two"是有效的结果。

我使用的是通用的工作单位/存储库模式(以防万一,让任何人感到困惑),但是它像Where子句一样接受任何表达式。

这是失败的查询:

var result = Base.View.Query<Keyword>(k =>
    groups.Any(g => g.All(w => k.Term.Contains(w))));

The table Keyword contains a string name 'Term'.
The content of Term would be something like "three two one".

如您所见,我正在尝试找到.Any() group.All() the words所在的contained in the table string k.Term

上面的查询与下一个查询等效,

var result = Base.View.Query<Keyword>(k =>
    primaryGroup.All(w => k.Term.Contains(w)) ||
    secondaryGroup.All(w => k.Term.Contains(w)))

但是不幸的是,这个扩展不容易。

我越来越害怕,无法接受此嵌套查询错误。

The nested query is not supported. Operation1='Case' Operation2='Collect'

我不是在寻找解决嵌套问题的方法,而是想知道是否还有另一种重组Linq查询的方法,以便它以不同的方式做同样的事情

0 个答案:

没有答案