【发布时间】:2014-02-27 05:41:02
【问题描述】:
我正在尝试编写这个方法:
public IQueryable<String> FilterIp(Boolean filter)
{
return filter ? ((IEnumerable<String>)_filterIp).Select(x => x).AsQueryable() : ((IEnumerable<String>)new String[0]).Select(x => x).AsQueryable();
}
String[] _filterIp = new[] { "191.16.95.133", "::1", "127.0.0.1" };
然后想像这样使用它:
.Where(ip => !FilterIp(filtered).Contains(ip)).ToList()
问题是我得到一个错误:
附加信息:LINQ to Entities 无法识别该方法 'System.Linq.IQueryable`1[System.String] FilterIp(Boolean)' 方法, 而且这个方法不能翻译成store表达式
【问题讨论】:
-
FilterIP 不是公认的 SQL 方法。所以你需要先把实体拉到本地。
-
先将
FilterIp(filtered)的结果存储在一个变量中,然后在查询中使用该变量。 -
@GertArnold 谢谢,请发布答案以便我接受。