【发布时间】:2012-04-30 06:52:16
【问题描述】:
我有一个简单的数据库,我使用了一个 EF 数据模型。
我的表格如下所示:
客户表
- 客户 ID
- 客户名称
订单表
- 订单编号
- 客户 ID FK
- 订购日期
我正在使用辅助类来查询我的模型,在这个类中我有以下查询:
public static List<object> GetCustomerOrdersCount()
{
using (OrdersDbEntities context = new OrdersDbEntities())
{
return context.Customers.Select(
c => new
{
CustId = c.CustomerId,
CustName = c.CustomerName,
OrdersCount = c.Orders.Count
}).ToList<object>();
}
}
我可以与此方法一起使用的唯一返回类型是 List<object>
最后我的问题是:我如何使用从这个查询中收到的数据?
我可以读取值的唯一方法是通过反射:
List<object> custs = Dal.GetCustomerOrdersCount();
foreach (var customer in custs)
{
var properties = customer.GetType().GetProperties();
foreach (var data in properties)
{
var value = data.GetValue(custs[0], null);
}
}
我想知道是否有更好的方法来做到这一点。
【问题讨论】:
-
你为什么使用对象而不是客户?我假设 context.Customers 是 Customer 的 DbSet?
-
这是我在尝试返回 List
时遇到的错误:System.Linq.IQueryable ' 不包含 'ToList' 的定义和最佳扩展方法重载' System.Linq.ParallelEnumerable.ToList (System.Linq.ParallelQuery )' 有一些无效参数 -
请发布 OrdersDbEntities 的代码
标签: c# linq entity-framework