1

我必须创建返回 IQueryable 的方法,并且 tor 取决于确切的类型。是否可以准备任何可以在 WHERE 语句之后使用的标准来获得它?

例如,if T == License i use "c.fkCustomer == Organization.Customer"

if T== People,我使用"c.fkPeople== Organization.People"等。

XPQuery<T> cQuery = new XPQuery<T>(cSession);
IQueryable CurrQr = from c in cQuery 
                    where "c.fkCustomer == Organization.Customer" 
                    select c;

有人可以提出一些建议,如何实现这个目标?

4

2 回答 2

4

我认为你最好在这里使用 lambda 作为参数,而不是动态 linq,例如。

public IQueriable<T> MyQuery<T>(Expression<Func<T, bool>> predicate)
{
    return new XPQuery<T>(cSession).Where(predicate)/*and any other bits you want at the moment this is a straight up where clause so kinda pointless*/;
}

那么你可以调用它:

MyQuery(c=> c.fkCustomer == Organization.Customer)

或者

MyQuery(c=> c.fkPeople == Organization.People)
于 2012-12-22T09:45:18.940 回答
1

是的,这是可以做到的。一种方法是使用动态查询库,您可以在此处找到有关如何使用它的详细信息: http ://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq -part-1-using-the-linq-dynamic-query-library.aspx

于 2012-12-22T09:33:19.800 回答