我想创建一个函数来检索给定属性名称类型的列表。但我还不知道如何创建一个有效的 lambda 选择器。
public IList<object> GetDistinctListOfProperty(string propertyName)
{
var propInfoByName = typeof(T).GetProperty(propertyName);
if (propInfoByName == null) return new List<object>();
using (var db = new ApplicationDbContext())
{
var lambda = //TODO
return db.Set<T>().Select(lambda).Distinct().ToList();
}
}
最佳答案
你可以使用这个方法来生成lambda
public static Expression<Func<T, object>> LambdaGenerator<T>(string propertyName)
{
var arg = Expression.Parameter(typeof(T), "current");
var property = Expression.Property(arg, propertyName);
var conv = Expression.Convert(property, typeof(object));
var exp = Expression.Lambda<Func<T, object>>(conv, new ParameterExpression[] { arg });
return exp;
}
然后使用这个方法来创建你的表达式
var lambda = LambdaGenerator<T>("Your Property Name");
关于c# - 使用 Entity Framework 时为 Select() 创建通用选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56789640/