正如其他人提及的,你的FunctionOn
方法没有由数据源直接平移。
但是,可能有变通的办法 - 大你正在做一个比较,这取决于你需要做什么样的比较,以及如何。
相反,如果你创建一个扩展方法,这需要一个IQueryable<T>
并返回IQueryable<T>
你可以直接写你的表达。
这可以让您重新使用复杂的表达式。您还应该能够与参考数据列表进行比较 - 但是您需要注意,此比较列表不会超过数据源允许的参数。
例子:
static void Main(string[] args)
{
var data = new List<Customer>
{
new Customer {Id = 1, Name = "Anna"},
new Customer {Id = 2, Name = "Bob"},
new Customer {Id = 3, Name = "Claire"}
};
var result = data.AsQueryable().TestCustomer();
}
private static IQueryable<Customer> TestCustomer(this IQueryable<Customer> source)
{
return source.Where(x => x.Id > 1);
}
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
你什么错误? `FunctionOn`应该返回`bool`。 – 2011-01-22 11:53:03
是的,像这种方法的错误不支持或类似的东西。 (我无法使用它) – Rawhi 2011-01-22 11:54:35
编译错误或运行时异常? – Elisha 2011-01-22 11:55:58