这是我的典型情景:
我有很多c#业务对象,或多或少与我的数据库设计相匹配。我还有这些对象的集合,用于绑定到gridviews。将这两个对象的字段组合到gridview(不使用数据表或创建视图)的最佳方法是什么?
假设我想要一个包含以下列的gridview:产品ID,产品名称,产品成本,运输公司名称。通常我只是从数据库中获取我的产品集合,并使用项目模板作为运输公司名称。然后我会在rowdatabound事件中获取ShippingCompanyID并再次转到数据库以获取我的运输公司名称。我讨厌两次去数据库,有人可以指导我如何处理这个问题吗?
产品类
航运公司类
答案 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,假设products
是Product
类型的集合,而shippingCompanies
是ShippingCompany
类型的集合。
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)的类中,并通常在视图中连接数据库中的表。
这样,代码中没有额外的工作,并且可以在其他方案中重复使用相同的视图,例如报告生成。