我试图通过在其他函数中组合重复函数来构建表达式。当内联写入时,一切都有效,但是当将重复函数设置为变量时,它会失败并且' LINQ表达式节点类型'调用' LINQ to Entities不支持'
我已经简化了下面的代码,但我的函数包含许多其他简单的字符串equals表达式。无论如何,即使只使用了一个等于表达式,我也会收到错误。
If ActiveSheet.Range("B1").Text <> "#N/A" Then
string[] anyPhrases; // Some phrases that may or may not exist in the entity
string[] exactPhrases; // Some phrases that must exist in the entity
Expression<Func<SomeEntity, bool>> func = (o =>
(anyPhrases.Any(phrase => (o.Name.ToLower() == phrase))
|| (exactPhrases.All(phrase => (o.Name.ToLower() == phrase))
); // Used in Where method
在第二个例子中,我不明白我在做什么/不做什么。据我了解,另一种方法是通过组合谓词来构建表达式here,但对于我尝试做的事情似乎过分。我也试图将结果保持在IQueryable的范围内,因此Linq-To-Object是我此时试图避免的。