【发布时间】:2017-08-25 12:37:48
【问题描述】:
我有两个类,产品和订单,请看类属性一击
public class Product()
{
public int ProductId { get;set; }
public string ProductName { get;set; }
public List<Order> OrderList { get;set; }
}
public class Order()
{
public int OrderId { get;set; }
public int ProductId { get;set; }
public string OrderNumber { get;set; }
public string OrderDescription { get;set; }
}
我有一个单独的调用来从每个类中获取数据
var productList = ProductService.GetAllProductList();
var orderList = OrderService.GetAllOrderList();
我想在这里实现的是我想将订单列表对象分配给产品,我可以通过以下方式实现这一点
foreach(var product in productList)
{
var selectedOrderList = orderList.Where(x => x.ProductId = product.ProductId).ToList();
product.OrderList = selectedOrderList;
}
如果我的产品和订单有大量数据,可能会导致一些性能问题。
这是因为我们在 orderList 中进行了不必要的查找,因为已经分配了一些订单数据。
有没有更好的方法来实现这一点?
【问题讨论】:
-
这真的取决于
productList和orderList实际上是什么 - 从你发布的内容来看,它们可能是任何东西,例如 IQueryables 到数据库等。你 实际上得到了您要解决的性能问题? -
你在使用实体框架吗
-
我没有使用实体框架,我上面使用的服务是从数据库调用的,它返回 List
和 List -
您可以同时实现这两种方法并使用秒表来测试哪个更快;)
-
为了最大限度地减少列表中的查找次数,您可以使用将产品 ID 映射到列表或订单的字典。这样,您只需要遍历一次订单列表即可创建字典。但这并不意味着它总体上会更快。
标签: c# performance linq list