1

有以下代码创建一个文件夹中所有图像的表。

VB:

Sub Page_Load(sender as Object, e as EventArgs)
    If Not Page.IsPostBack then
      Dim dirInfo as New DirectoryInfo(Server.MapPath("/images"))
      articleList.DataSource = dirInfo.GetFiles("*.jpg")
      articleList.DataBind()
    End If
  End Sub

身体:

<asp:DataGrid runat="server" id="articleList" AutoGenerateColumns="False" ShowHeader="false">
    <Columns>
      <asp:BoundColumn DataField="Name" />
    </Columns>
  </asp:DataGrid>

结果如下所示:

aa_01.jpg
aa_02.jpg
aa_03.jpg
bb_01.jpg
bb_02.jpg
cc_01.jpg
cc_02.jpg
cc_03.jpg
cc_04.jpg
...

我现在要做的是将所有这些按前两个字符分组并获取每个字符的总数并将它们插入单独的字符串中。所以对于上面的例子,它会是这样的:

将 aa 调暗为字符串 = 3
将 bb 调为字符串 = 2
将 cc 调为字符串 = 4

有什么想法吗?

4

2 回答 2

1

您可以使用 Linq 执行此操作。试试这个。

dim q = From p in articles _
        Group By Name = p.Name.SubString(0,2) into g = group _
        Select GroupName = Name, _
               Count = g.Count()

更新(根据评论提供一些上下文)

Sub Page_Load(sender as Object, e as EventArgs)

    If Not Page.IsPostBack then
      Dim dirInfo as New DirectoryInfo(Server.MapPath("/images"))
      Dim articles = dirInfo.GetFiles("*.jpg")

      articleList.DataSource = articles
      articleList.DataBind()

      Dim groupings = From p in articles _
                      Group By Name = p.Name.SubString(0,2) into g = group _
                      Select GroupName = Name, _
                             Count = g.Count()

      ' do whatever you like with the groupings '
    End If

End Sub
于 2011-03-24T15:09:14.227 回答
0

在 C# 中,使用 LINQ:

groupedArticleList = (from a in articleList
                      group a by a.Name.Substring(0, 2) into g
                      select new
                      {
                          GroupName = g.Key,
                          ArticleCount = g.Count()
                      });

您不能真正将它们提取到单独的变量中,但您可以groupedArticleList按原样使用并循环遍历它或将其转换为Dictionary<string, int>.

抱歉,我不知道 VB 语法,但希望这会有所帮助。

于 2011-03-24T15:04:08.883 回答