对于静态方法,可以如下执行
ParameterExpression numParam = Expression.Parameter(typeof(string), "str");
ConstantExpression b = Expression.Constant(true, typeof(bool));
MethodCallExpression methodCall = Expression.Call(typeof(string).GetMethod("IsNullOrEmpty"), numParam);
BinaryExpression isEqual = Expression.NotEqual(methodCall, b);
Expression<Func<string, bool>> lambda1 =
Expression.Lambda<Func<string, bool>>(
isEqual,
new ParameterExpression[] { numParam });
对于"xy".IndexOf("x")这种应该怎么做呢?
13 个解决方案
#1
怎么没人回答的〉〉〉〉????
#2
为啥没人回答阿?
另外再问一下,接上面的代码:
另外再问一下,接上面的代码:
string[] temp = { null, "3", "", "5", "7" };
var result = temp.Where(lambda1);
/*报错
错误 1 无法从用法中推导出方法“System.Linq.Enumerable.Where<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)”的类型实参。请尝试显式指定类型实参。 D:\My Documents\Visual Studio 2008\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 34 37 ConsoleApplication1
*/
//而以下代码就正确
var result = temp.Where(str => string.IsNullOrEmpty(str) != true);
#3
难道我要悲剧了?没人回答????
#4
先帮你顶
#5
终于~~~~~
2楼的问题不用回答了,我已经知道原因了
IQueryble的时候用Expression
IEnumerable的时候用Fun
只要回答最初的就行
2楼的问题不用回答了,我已经知道原因了
IQueryble的时候用Expression
IEnumerable的时候用Fun
只要回答最初的就行
#6
看不懂啊,你那些类和参数我一个也没见过
#7
帮顶是可以的
#8
"xy".IndexOf("x")???
string temp = "xyz";
var result = temp.IndexOf("x");
IndexOf不是静态方法,是实例方法。
string temp = "xyz";
var result = temp.IndexOf("x");
IndexOf不是静态方法,是实例方法。
#9
我现在要问的就是实例方法应该怎么写Expression
#10
#11
就上面那样写,还要怎么样写??
#12
ParameterExpression numParam = Expression.Parameter(typeof(string), "str");
ConstantExpression b = Expression.Constant(true, typeof(bool));
MethodCallExpression methodCall = Expression.Call(typeof(string).GetMethod("IsNullOrEmpty"), numParam);
BinaryExpression isEqual = Expression.NotEqual(methodCall, b);
Expression<Func<string, bool>> lambda1 =
Expression.Lambda<Func<string, bool>>(
isEqual,
new ParameterExpression[] { numParam });
对应的Lambel 是
str => string.IsNullOrEmpty(str)!=true
我现在想问的是
str => str.IndexOf('a') >0
这个对应的表达式树
#13
ParameterExpression strParam = Expression.Parameter(typeof(string), "str");
MethodInfo cMe = typeof(string).GetMethod("Contains");
ConstantExpression ce = Expression.Constant("a",typeof(string));
MethodCallExpression call = Expression.Call(strParam, cMe, ce);
Expression<Func<string, bool>> lam = Expression.Lambda<Func<string, bool>>(call, strParam);
记录
#1
怎么没人回答的〉〉〉〉????
#2
为啥没人回答阿?
另外再问一下,接上面的代码:
另外再问一下,接上面的代码:
string[] temp = { null, "3", "", "5", "7" };
var result = temp.Where(lambda1);
/*报错
错误 1 无法从用法中推导出方法“System.Linq.Enumerable.Where<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)”的类型实参。请尝试显式指定类型实参。 D:\My Documents\Visual Studio 2008\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 34 37 ConsoleApplication1
*/
//而以下代码就正确
var result = temp.Where(str => string.IsNullOrEmpty(str) != true);
#3
难道我要悲剧了?没人回答????
#4
先帮你顶
#5
终于~~~~~
2楼的问题不用回答了,我已经知道原因了
IQueryble的时候用Expression
IEnumerable的时候用Fun
只要回答最初的就行
2楼的问题不用回答了,我已经知道原因了
IQueryble的时候用Expression
IEnumerable的时候用Fun
只要回答最初的就行
#6
看不懂啊,你那些类和参数我一个也没见过
#7
帮顶是可以的
#8
"xy".IndexOf("x")???
string temp = "xyz";
var result = temp.IndexOf("x");
IndexOf不是静态方法,是实例方法。
string temp = "xyz";
var result = temp.IndexOf("x");
IndexOf不是静态方法,是实例方法。
#9
我现在要问的就是实例方法应该怎么写Expression
#10
#11
就上面那样写,还要怎么样写??
#12
ParameterExpression numParam = Expression.Parameter(typeof(string), "str");
ConstantExpression b = Expression.Constant(true, typeof(bool));
MethodCallExpression methodCall = Expression.Call(typeof(string).GetMethod("IsNullOrEmpty"), numParam);
BinaryExpression isEqual = Expression.NotEqual(methodCall, b);
Expression<Func<string, bool>> lambda1 =
Expression.Lambda<Func<string, bool>>(
isEqual,
new ParameterExpression[] { numParam });
对应的Lambel 是
str => string.IsNullOrEmpty(str)!=true
我现在想问的是
str => str.IndexOf('a') >0
这个对应的表达式树
#13
ParameterExpression strParam = Expression.Parameter(typeof(string), "str");
MethodInfo cMe = typeof(string).GetMethod("Contains");
ConstantExpression ce = Expression.Constant("a",typeof(string));
MethodCallExpression call = Expression.Call(strParam, cMe, ce);
Expression<Func<string, bool>> lam = Expression.Lambda<Func<string, bool>>(call, strParam);
记录