[英]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發送電子郵件。
您可以在兩個單獨的循環中進行所有這些處理。
Repid
組成,作為鍵,而城市列表作為值,通過表的一次傳遞。 它比您提議的要快得多。 IIRC#1也可以完全在一個LINQ語句中完成,請參見: 如何:將序列中的元素分組(LINQ to SQL)
編輯:這個stackoverflow問題似乎與有效的數據表分組依據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.