据我所知,你需要得到这样的结果:
var result = nameList.Where(obj => personNameHashset.Contains(obj));
Name
属性
memberExpressionColumn
你可以打电话给我
containsMethodInfo
具有
ParameterExpression parameterType
Expression<Func<T, bool>>
这样地
public static Expression<Func<T, bool>> EqualExpression<T>(this HashSet<string> nameHashSet)
{
ParameterExpression parameterType = Expression.Parameter(typeof(T), "obj");
var containsMethodInfo = typeof(StringListExtensions).GetMethod("Contains", new[] { typeof(string), typeof(HashSet<string>) });
ConstantExpression constant = Expression.Constant(nameHashSet, typeof(HashSet<string>));
var resultExpression = Expression.Call(null, containsMethodInfo, parameterType, constant);
return Expression.Lambda<Func<T, bool>>(resultExpression, parameterType);
}
并称之为:
var finalExpression = personNameHashset.EqualExpression<string>();
var finalFunc = finalExpression.Compile();
var result = nameList.Where(finalFunc);