正确的方法使用集合与GridView控件asp.net c#

问题描述:

这是我的典型场景:正确的方法使用集合与GridView控件asp.net c#

我有很多c#业务对象,或多或少地匹配我的数据库设计。我也有这些对象的集合,我用它来绑定到gridviews。什么是将这两个对象的字段合并到我的gridview(不使用数据表或创建视图)的最佳方式是什么?

比方说,我想要一个包含以下列的gridview:Product ID,Product Name,Product Cost,Shipping公司名。通常,我只需从数据库中获取我的产品集合,并使用货运公司名称的项目模板。然后,我将在rowdatabound事件中获取ShippingCompanyID并再次转到数据库以获取我的货运公司名称。我讨厌去数据库两次,有人可以教我如何处理这个问题吗?

产品类别

  • 的ProductID
  • 名称
  • 成本
  • ShippingCompanyID

运输公司

  • 施ppingCompanyID
  • 名称

您可以使用连接在Linq的愿望得以实现的结果。

var result = from prd in products 
     from cmp in companies 
     where prd.ShippingCompanyID == cmp.ShippingCompanyID 
     select new 
      { 
      ProductID=prd.ProductID, 
      ProductName=prd.Name, 
      Company=cmp.Name 
     }; 
+0

谢谢AVD!你真的会用这种方式处理这类问题吗?你喜欢使用数据表而不是集合吗?使用linq合并集合而不是在数据库中而不是在代码中加入表一次会出现速度问题吗?此外,这种方式迫使您两次访问数据库,一次为产品,再次为公司。 – stillsmallvoice 2011-12-14 05:43:39

使用LINQ,假设productsProduct类型的集合,和shippingCompaniesShippingCompany类型的集合。

from p in products 
join s in shippingCompanies on p.ShippingCompanyID equals s.ShippingCompanyID 
select new { p.ProductID, p.Name, p.Cost, s.Name } 

在这样的情况下,我们实际上包括绑定到网格(产品)类的公司名称并加入数据库中的表,通常在一个视图。

这种方式在代码中没有额外的工作,并且可以在其他场景(如报告生成)中重复使用相同的视图。