相关疑难解决方法(0)

在Linq中使用Expression <Func <T,X >>包含扩展名

使用下面的示例我想Expression在我的Contains方法中使用我的内容,让它使用EF.将查询传递到sql server .

我怎样才能使这个正常工作?

void Main()
{

    IQueryable<Person> qry = GetQueryableItemsFromDB();
    var filtered = qry.Filter(p=>p.CompanyId);

}

public static class Ext
{
    public static IQueryable<T> Filter<T>(this IQueryable<T> items, Expression<Func<T, int>> resolveCompanyIdExpression)
    {      
        IEnumerable<int> validComps = GetCompanyIdsFromDataBase();        
        var exp = Expression.Lambda<Func<T, bool>>(          
            Expression.Call(typeof(Queryable),"Contains", new[] { typeof(Company) },
            Expression.Constant(validComps),
            resolveCompanyIdExpression.Body),
            resolveCompanyIdExpression.Parameters[0]);
        return items.Where(exp);  
    }  

    public static IQueryable<T> Filter<T>(this IQueryable<T> items, Expression<Func<T, IEnumerable<int>>> resolveCompanyIdExpression)
    {      
        IEnumerable<int> validComps = GetCompanyIdsFromDataBase();        
        //No Idea what to do here ?
    }  
}

public class …
Run Code Online (Sandbox Code Playgroud)

.net c# linq lambda linq-expressions

7
推荐指数
1
解决办法
4616
查看次数

标签 统计

.net ×1

c# ×1

lambda ×1

linq ×1

linq-expressions ×1