簡體   English   中英

ASP.NET VB.NET數據表需要進行分組

[英]ASP.NET VB.NET datatable need to do group by

我在VB.net上使用ASP.NET 3.5,我有一個這樣的DataTable。

RpID       LocationServed
----       --------------
1          St. Louis
1          Baltimore
1          Columbus
2          Chicago
2          St. Charles
2          Peoria
2          Nashville
3          Dallas
3          Miami
3          Indianapolis

對於每個代表來說,我需要發送一封電子郵件,其中提供了他們所有的位置信息。

我不太確定該怎么做。 我正在使用ASP.NET 4

我的計划是有2個循環

    <loop1 that has the group by of RepID>

     <loop2 can go through the list of items for a given RepID >

      strCity = do processing here that will compile a list of the cities for a given rep

     </loop2 end>

     <send out email a given RepID and then reset strCity >

   <loop1 end>

但是還不確定最好的方法是什么來解決這個問題。

您可以通過以下三種方式之一進行操作。

假設DataTable按RpID排序,有一個循環,處理每個城市。 當RpID更改時,發送電子郵件。

要么...

在數據表上循環。 當RpID更改時,在數據表上調用.Select並根據RpID進行過濾。 在返回的DataRows數組上循環並處理每個城市。 發送電子郵件。

要么...

由於使用的是ASP.NET 4,因此可以使用LINQ查詢從數據表中獲取RpID的不同列表,在該RpID列表上循環,然后在循環中,對數據表使用LINQ查詢以獲取列表該RpID的數據表中的城市數量。 發送電子郵件。 參見此處 (這里討論的是數據集,但實際上是同一回事)

請注意,對於這些方法中的任何一種,您都必須在循環后進行檢查,以便為最后處理的RpID發送電子郵件。

您可以在兩個單獨的循環中進行所有這些處理。

  1. 創建一個字典(可能排序),該字典由Repid組成,作為鍵,而城市列表作為值,通過表的一次傳遞。
  2. 處理字典。 對於每個鍵,獲取相關列表(可能對其進行排序)並發送電子郵件。

它比您提議的要快得多。 IIRC#1也可以完全在一個LINQ語句中完成,請參見: 如何:將序列中的元素分組(LINQ to SQL)

編輯:這個stackoverflow問題似乎與有效的數據表分組依據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM