我的扩展程序:
public class IQueryableExtensions
{
public static IQueryable<T> Filter<T>(this IQueryable<T> collection, Expression<Func<T, bool>> where, string value, out bool hasFilter)
{
hasFilter = false;
if (!String.IsNullOrEmpty(value))
{
collection = collection.Where(where);
hasFilter = true;
}
return collection;
}
}
我的代码:
IQueryable<GlobalLocation> customers = db.GlobalLocations;
customers.Filter(...); // Doesn't work
IQueryableExtensions.Filter<GlobalLocation>(customers, c => c.TBUID == searchTbuid, searchTbuid, out hasFilter); // Works
尝试通过customers
调用它甚至不会出现在intellisense中。为什么这样,可以/如何解决?
答案 0 :(得分:4)
变化:
public class IQueryableExtensions
要:
public static class IQueryableExtensions
扩展方法应该是静态类中的静态方法。
答案 1 :(得分:2)
您必须将扩展方法放在static
类中。
public static class IQueryableExtensions
{
// Place here your extension methods.
}
Exntension方法应放在静态类中。
一方不是将静态类的名称从IQueryableExtensions
更改为QueryableExtensions
,它是类而不是接口。除了明确QueryableExtensions
是一个类而不是一个接口之外,这不会有任何区别。
答案 2 :(得分:1)
扩展类和方法签名必须是静态的。
使用
public static class IQueryableExtensions