【发布时间】:2013-01-15 06:43:16
【问题描述】:
我正在尝试创建一个小型网络应用程序,当我输入游戏名称时,它会搜索包含大量图标的文件夹,以找到与输入的游戏相似的图标。
然后我想显示一个带有图标名称的转发器,以及它旁边的图标。
到目前为止,我已经成功地用这个代码显示了名字:
IEnumerable<string> getfiles =
from f in
Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories)
where Path.GetFileName(f).ToLower().Contains(txtGameName.Text.ToLower())
select Path.GetFileNameWithoutExtension(f);
List<AllFiles> all = getfiles.Select(file => new AllFiles
{
FileName = file,
SubdirectoryName = "",
FileNameWithExtension = ""
}).ToList();
rptGameMatches.DataSource = all;
rptGameMatches.DataBind();
但在显示图标时运气不佳,该图标位于ImageLocation。
我试过玩:
foreach (string file in Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories).Count() )
{
if(file.)
}
和
for (int i = 0; i < Directory.EnumerateFiles(Server.MapPath("~/_resources/game_icon"), "*.*", SearchOption.AllDirectories).Count(); i++)
{
}
没有成功。
我知道有一种简单的方法可以做到这一点,但我似乎不能完全正确。有人可以告诉我哪里出错了吗?
【问题讨论】:
-
你为什么要创建一个
AllFiles,它基本上有两次相同的数据?为什么您期望能够将Count()的结果用作foreach循环中的源? -
不,最后两个只是我在玩这个想法,所以你可以看到我至少在尝试一个解决方案。在我看来,我需要将它放在一个通用列表中,以将名称和路径正确绑定到转发器。不过,我很乐意听到我完全错了。
-
所以每个条目都应该是
{ "foo.png", "c:\Whatever\Bar.path" }?请记住,如果您想提供图片,则需要 URL 而不是文件路径。 -
我要查找的条目是
{ "foo", "/_resources/game_icon/" + "foo.png" }。我需要文件名(不带扩展名 - 因为文件夹中有不同的扩展名)作为文件名,以及带有扩展名的文件名作为图像位置。 Edit 我现在意识到我需要另一个 DirectoryName 变量,因为图像位于子目录中。我正在使用imageresizing.net 来显示我的图像。
标签: c# asp.net repeater generic-list