在GridView控件中使用集合的正确方法

本文关键字:方法 集合 GridView 控件 | 更新日期: 2023-09-27 18:17:41

这是我的典型场景:

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

假设我想要一个包含以下列的网格视图:产品ID、产品名称、产品成本、运输公司名称。通常,我只是从数据库中获取我的产品集合,并使用项目模板作为运输公司名称。然后,我将在rowdatabound事件中获取ShippingCompanyID,并再次访问数据库以获取我的航运公司名称。我讨厌去数据库两次,有人能教我应该怎么做吗?

产品类
  • ProductID
  • <
  • 名称/gh>
  • ShippingCompanyID

船级社

  • ShippingCompanyID
  • <
  • 名称/gh>

在GridView控件中使用集合的正确方法

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

您可以在Linq中使用join来达到期望的结果。

 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 
         };

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

通过这种方式,代码中没有额外的工作,并且相同的视图可以在其他场景中重用,例如报表生成。