Public Shared Function getFilterStartsWith(Of T)(ByVal param As ParameterExpression, ByVal prop As MemberExpression, ByVal arg As Object) As Expression
Dim mi As MethodInfo = GetType(String).GetMethod("StartsWith", New Type() {GetType(String)}, Nothing)
Return Expression.Lambda(Of Func(Of T, Boolean))(LambdaExpression.[Call](prop, mi, Expression.Constant(arg, GetType(String))), param)
End Function
В C #:
public static Expression getFilterStartsWith<T>(ParameterExpression param, MemberExpression prop, object arg) {
MethodInfo mi = typeof(string).GetMethod("StartsWith", new Type[] { typeof(string) }, null);
return Expression.Lambda<Func<T, bool>>(LambdaExpression.Call(prop, mi, Expression.Constant(arg, typeof(string))), param);
}
Это функция, которую я использую для стартов с решением , которое я недавно написал.Это оказалось огромной болью, потому что вы не можете использовать переменную Type в качестве параметра в ctype или DirectCast в vb, и вы не можете выполнять сравнения linq для объекта и обнуляемого объекта одного типа.