返回通用实体列表

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();