C# 如何调用任意LINQ to SQL查询
假设我使用任意查询的表达式,是否可以以某种方式调用它C# 如何调用任意LINQ to SQL查询,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,假设我使用任意查询的表达式,是否可以以某种方式调用它 MyContext ctx1 = new MyContext("..."); var q = from t in ctx1.table1 where t.id = 1 select t; Expression qe = q.Expression; var res = Expression.Invoke(qe); 这引发了: ArgumentException“无法调用System.Linq.IQueryable`1[…]”类型的表达式”
MyContext ctx1 = new MyContext("...");
var q = from t in ctx1.table1 where t.id = 1 select t;
Expression qe = q.Expression;
var res = Expression.Invoke(qe);
这引发了:
ArgumentException“无法调用System.Linq.IQueryable`1[…]”类型的表达式”
我的最终目标是在几个不同的数据上下文上计算同一查询。表达式由LINQtoSQL提供程序解析并转换为。我的猜测是,有人明确提出了一个例外——Microsoft不打算直接调用这些表达式(您可以使用确认)。如果您的目标是在不同的上下文中运行表达式,为什么不创建这样的表达式:-
Expression<Func<MyClass, bool>> myExpression = x => x.id == 1;
Expression myExpression=x=>x.id==1;
然后您可以使用它做任何您喜欢的事情,包括在.Where()子句中使用它。查询不是表达式。查询具有ExpressionTree 查询不是要调用的方法 可以枚举查询,从而产生结果。此代码将枚举任何IQueryable:
List<object> result = query.Cast<object>().ToList();
List result=query.Cast().ToList();
我的最终目标是评估 对多个不同数据的相同查询 上下文 然后,您应该将查询编写为接受DataContext作为参数的查询生成器
Func<MyDataContext, IQueryable<Customer>> queryGen =
(dc) => dc.Customers.Where(c => c.Name == "Bob");
//now we can get some queries
IQueryable<Customer> query1 = queryGen(new MyDataContext());
IQueryable<Customer> query2 = queryGen(new MyDataContext());
Func查询=
(dc)=>dc.Customers.Where(c=>c.Name==“Bob”);
//现在我们可以得到一些查询
IQueryable query1=queryGen(新的MyDataContext());
IQueryable query2=queryGen(新的MyDataContext());
查询不仅仅是WHERE子句。我需要任意查询。是否声明属性IQueryable.Expression不存在?访问查询表达式以篡改DataContext就像拆解汽车发动机以打开收音机一样。