Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带sql查询的表达式树_C#_.net_Expression Trees - Fatal编程技术网

C# 带sql查询的表达式树

C# 带sql查询的表达式树,c#,.net,expression-trees,C#,.net,Expression Trees,我正在尝试创建一个表达式树,它将在我的表中查找Foo列中所有字符串“email”的test。我几乎是从msdn中复制的,只是做了一些小改动,无法让它在我的表中搜索。任何有助于搜索此表达式树的帮助都将非常有用。多谢各位 名为Test的表结构 id int foo char(10) 错误 类型System.Linq.Queryable上的泛型方法“Where”与提供的类型参数不兼容 var s=new m2Entities().Test var queryableData=new m2Entiti

我正在尝试创建一个表达式树,它将在我的表中查找Foo列中所有字符串“email”的test。我几乎是从msdn中复制的,只是做了一些小改动,无法让它在我的表中搜索。任何有助于搜索此表达式树的帮助都将非常有用。多谢各位

名为Test的表结构

id int
foo char(10)
错误

类型System.Linq.Queryable上的泛型方法“Where”与提供的类型参数不兼容

var s=new m2Entities().Test
var queryableData=new m2Entities().SaleLogs.AsQueryable();
ParameterExpression pe=Expression.Parameter(typeof(string),“foo”);
Expression left=Expression.Call(pe,typeof(string).GetMethod(“ToLower”,System.Type.EmptyTypes));
表达式右=表达式常数(“条形”);
表达式e1=表达式.Equal(左、右);
MethodCallExpression,其中CallExpression=Expression.Call(typeof(Queryable),
“哪里”,
新类型[]{queryableData.ElementType},
queryableData.Expression,
Lambda(e1,新参数表达式[]{pe});
var results=queryableData.Provider.CreateQuery(whereCallExpression);

您尝试这样调用
Where

Queryable.Where<SaleLog>((string pe) => pe.ToLower() == "bar")
Queryable.Where((字符串pe)=>pe.ToLower()==“bar”)
这是不对的。应该是:

Queryable.Where<SaleLog, bool>((SaleLog pe) => pe.foo.ToLower() == "bar")
Queryable.Where((SaleLog-pe)=>pe.foo.ToLower()==“bar”)
此错误消息暗示:

类型System.Linq.Queryable上的泛型方法“Where”与提供的类型参数不兼容


这完全正确。

你试过用手写同样的表达式吗?那会是什么样子?提示:不能使用普通linq查询m2Entities()调用
string.ToLower()
@svick上的
string
???正常的linq查询工作得很好,但是您正在构建的查询中没有
x
.Foo
。它实际上类似于
foo=>foo.ToLower()==“bar”
。我还没有完全理解表达式树,但是msdn页面没有指出我需要“x”,我在第3行中有“foo”来匹配我要搜索的列。这是最能帮助我的答案,以防其他人需要它。
Queryable.Where<SaleLog, bool>((SaleLog pe) => pe.foo.ToLower() == "bar")