返回通用实体列表
Returning a list of generic entities
public List<Customer> GetAllCustomers()
{
List<Customer> listOfCustomers = db.Customer.ToList();
return listOfCustomers;
}
我有一个包含三个表(实体)的数据库:Customer、Event 和 Venue。如您所见,我正在 return 创建一个包含 Customers 的列表,但我想知道是否有一种方法可以 return 列表中的实体作为更通用的东西。这将使我不必被迫为所有实体使用单独的 get 方法。
我在网上搜索过,但没有发现任何适用于使用 lamdba 语法的内容。
非常感谢您的帮助!
这应该可以完成工作,只需使用上下文的 Set<T>
属性:
public List<T> GetEntities<T>() where T : class
{
return db.Set<T>().ToList();
}
但是,您可能希望此函数返回 IQueryable<T>
而不是 List<T>
,这样您就可以继续从延迟执行中获益。所以方法变成:
public IQueryable<T> GetEntities<T>() where T : class
{
return db.Set<T>();
}
并这样称呼它:
List<Customer> listOfCustomers = GetEntities<Customer>();
或 IQueryable<T>
版本:
IQueryable<Customer> listOfCustomers = GetEntities<Customer>();
现在可以正常查询的是:
IQueryable<Customer> allCustomers = listOfCustomers;
List<Customer> onlyBobs = allCustomers
.Where(c => c.Name = "Bob")
.ToList();
public List<Customer> GetAllCustomers()
{
List<Customer> listOfCustomers = db.Customer.ToList();
return listOfCustomers;
}
我有一个包含三个表(实体)的数据库:Customer、Event 和 Venue。如您所见,我正在 return 创建一个包含 Customers 的列表,但我想知道是否有一种方法可以 return 列表中的实体作为更通用的东西。这将使我不必被迫为所有实体使用单独的 get 方法。
我在网上搜索过,但没有发现任何适用于使用 lamdba 语法的内容。
非常感谢您的帮助!
这应该可以完成工作,只需使用上下文的 Set<T>
属性:
public List<T> GetEntities<T>() where T : class
{
return db.Set<T>().ToList();
}
但是,您可能希望此函数返回 IQueryable<T>
而不是 List<T>
,这样您就可以继续从延迟执行中获益。所以方法变成:
public IQueryable<T> GetEntities<T>() where T : class
{
return db.Set<T>();
}
并这样称呼它:
List<Customer> listOfCustomers = GetEntities<Customer>();
或 IQueryable<T>
版本:
IQueryable<Customer> listOfCustomers = GetEntities<Customer>();
现在可以正常查询的是:
IQueryable<Customer> allCustomers = listOfCustomers;
List<Customer> onlyBobs = allCustomers
.Where(c => c.Name = "Bob")
.ToList();