我的一些类具有相同名称的属性。我想使用通用函数返回这些对象的列表。属性值有这样的:
public void List<string> GetValue<T>(Expression<Func<T, string>> expression) where T : class
{
var all = new MyEntities<T>().GetAll();
return all.Select(expression).ToList();
}
然后我可以调用这个函数:
var allBookNames = GetValue<Book>(x => x.Name)
var allCustomerNames = GetValue<Customer>(x => x.Name)
行all.Select(express).ToList()
显然不起作用。我该如何解决?
更新
对不起。我是个白痴。问题是GetAll()方法返回了一个ICollection,它没有Select方法。我只需要调用As Queryable()。抱歉浪费你的时间。
我将关闭这篇文章。
答案 0 :(得分:0)
不确定我是否正确理解!
我猜您正在使用Entity Framework,您可以使用存储库模式实现此目的。您需要实现一个方法,它将为提供的实体返回DbSet:
public DbSet<T> GetValue<T>()
where T : class
{
return context.Set<T>();
}
然后你可以打电话:
repository.GetValue<Book>().Select(p => p.Name == "John");
它将返回名为John的书籍。
请阅读MSDN上的Set<T>()
。