2011-12-14 61 views
0

這是我的典型場景:正確的方法使用集合與GridView控件asp.net c#

我有很多c#業務對象,或多或少地匹配我的數據庫設計。我也有這些對象的集合,我用它來綁定到gridviews。什麼是將這兩個對象的字段合併到我的gridview(不使用數據表或創建視圖)的最佳方式是什麼?

比方說,我想要一個包含以下列的gridview:Product ID,Product Name,Product Cost,Shipping公司名。通常,我只需從數據庫中獲取我的產品集合,並使用貨運公司名稱的項目模板。然後,我將在rowdatabound事件中獲取ShippingCompanyID並再次轉到數據庫以獲取我的貨運公司名稱。我討厭去數據庫兩次,有人可以教我如何處理這個問題嗎?

產品類別

  • 的ProductID
  • 名稱
  • 成本
  • ShippingCompanyID

運輸公司

  • 施ppingCompanyID
  • 名稱

回答

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

謝謝AVD!你真的會用這種方式處理這類問題嗎?你喜歡使用數據表而不是集合嗎?使用linq合併集合而不是在數據庫中而不是在代碼中加入表一次會出現速度問題嗎?此外,這種方式迫使您兩次訪問數據庫,一次爲產品,再次爲公司。 – stillsmallvoice 2011-12-14 05:43:39

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

在這樣的情況下,我們實際上包括綁定到網格(產品)類的公司名稱並加入數據庫中的表,通常在一個視圖。

這種方式在代碼中沒有額外的工作,並且可以在其他場景(如報告生成)中重複使用相同的視圖。

相關問題