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

时间:2011-12-14 02:07:03

标签: c# asp.net

这是我的典型情景:

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

假设我想要一个包含以下列的gridview:产品ID,产品名称,产品成本,运输公司名称。通常我只是从数据库中获取我的产品集合,并使用项目模板作为运输公司名称。然后我会在rowdatabound事件中获取ShippingCompanyID并再次转到数据库以获取我的运输公司名称。我讨厌两次去数据库,有人可以指导我如何处理这个问题吗?

产品类

  • 的ProductID
  • 名称
  • 费用
  • ShippingCompanyID

航运公司类

  • ShippingCompanyID
  • 名称

3 个答案:

答案 0 :(得分:1)

您可以在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 
         };

答案 1 :(得分:1)

使用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 }

答案 2 :(得分:1)

在这种情况下,我们实际上将公司名称包含在绑定到网格(Products)的类中,并通常在视图中连接数据库中的表。

这样,代码中没有额外的工作,并且可以在其他方案中重复使用相同的视图,例如报告生成。