vb.net - Вставка количества файлов с именем XX в строку
Иметь следующий код, который создает таблицу всех изображений в папке.
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
...
Теперь я хочу сгруппировать их по первым двум символам, получить общее число для каждого и вставить их в отдельные строки. Так что для приведенного выше примера это будет что-то вроде:
Dim aa As String = 3
Dim bb As String = 2
Dim cc As String = 4
Есть идеи как?
2 ответа
Вы можете сделать это с помощью 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
В 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, но, надеюсь, это поможет.