我有一个字符串,可以将其转换为二维数组以进行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查询的方法,以便它以不同的方式做同样的事情