【发布时间】:2011-06-24 13:37:58
【问题描述】:
我有用户搜索记录类型的记录。他们在文本框中输入搜索词,然后我通过将多个字段与搜索词匹配来搜索记录。
我的查询如下:
var results = from record in DataContext.Records
where
record.Field1.ToLower().Contains(term) ||
record.Field2.ToLower().Contains(term) ||
record.Field3.ToLower().Contains(term)
select record;
我有许多查询都使用相同的过滤器,因此我想提取过滤器以便重复使用。比如:
var filter = new Func<Record, string, bool>(
(record, term) =>
record.Field1.ToLower().Contains(term) ||
record.Field2.ToLower().Contains(term) ||
record.Field3.ToLower().Contains(term)
);
var results = from record in DataContext.Records
where filter(record, term)
select record;
但是,它不起作用,因为:
方法 'System.Object DynamicInvoke(System.Object[])' 不支持 SQL 转换。
如何在查询中重复使用我的 where 条件?
【问题讨论】:
标签: c# .net linq-to-sql