ASP.NET VB.NET数据表需要做群
我使用ASP.NET 3.5与VB.net 我有一个DataTable这样的。ASP.NET VB.NET数据表需要做群
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查询从数据表中,环RpIDs的名单上获得的RFID的一个独特的列表,然后在环,在数据表上使用LINQ查询以从该数据表中获取该RpID的城市列表。发送电子邮件。请参阅here(这是关于数据集的讨论,但实际上是一样的)
请注意,对于这些方法中的任何一种,您必须在循环之后检查以发送处理的最后一个RpID的电子邮件。
您可能也可以使用LINQ与数据表进行分组,而不必使用LINQ语句。 – 2012-08-03 15:34:23
您可以在两个单独的循环中完成所有这些处理。
- 创建由所述
Repid
S作为密钥和城市的列表如表中的单次通过值的字典(可能排序)。 - 处理字典。对于每个键,抓住关联的列表(可能对其进行排序)并发送电子邮件。
它比任何你提出的要快得多。 IIRC#1可以在一个声明LINQ做纯粹还有,请参阅:How to: Group Elements in a Sequence (LINQ to SQL)
编辑:这个计算器的问题似乎与Efficient DataTable Group By
您需要发送多封电子邮件,以相同的RFID?如果这是为什么你需要分组! – 2012-08-03 15:14:08