Предполагая, что ваш myLab02Entities1
имеет все свойства, которые вы хотите запросить (Projects
, Persons
, Products
и т. Д.), Вы можете сделать это:
public List<string> GetObjectsFromDb<T>(string columnName, Func<myLab02Entities1, IEnumerable<T>> entitySelector)
{
ParameterExpression parameter = Expression.Parameter(typeof(T), "x");
var lambda = Expression.Lambda(Expression.Property(parameter, columnName), parameter);
Expression<Func<T, string>> funcExpression = (Expression<Func<T, string>>) lambda;
using (var mLEntities = new myLab02Entities1())
{
var cl = entitySelector(mLEntities).AsQueryable().Select(funcExpression).Distinct();
List<string> searchRes = cl.AsEnumerable().ToList();
return searchRes;
}
}
Я в основном добавилуниверсальный параметр T
и новый параметр entitySelector
, который возвращает соответствующее свойство в myLab02Entities1
.Вы можете применить более строгое общее ограничение к T
, если хотите.
Использование:
GetObjectsFromDb("someColumn", x => x.Projects);
GetObjectsFromDb("someColumn", x => x.Persons);
GetObjectsFromDb("someColumn", x => x.Products);