可能有幾個原因:
Server.MapPath(@"/ysyp/Images/Products/")
沒有指向你認爲它
imageName.Name == productDetail.ProductCode
將執行區分大小寫的比較
image.Name
返回文件名包括擴展名的目錄。我想ProductCode不包括這個。
建議改變的代碼:
DirectoryInfo directoryInfo = new DirectoryInfo(Server.MapPath(@"/ysyp/Images/Products/"));
var fileList = (directoryInfo.GetFiles())
.ToList()
.FindAll(imageName => string.Compare(imageName.Name,
productDetail.ProductCode + imageName.Extension,
StringComparison.OrdinalIgnoreCase) == 0);
這將文件擴展名添加到產品代碼,然後執行區分大小寫的比較,以檢查是否有匹配。
作爲一個小的調整可以去除中間的ToList
通話,並使用LINQ Where
延伸,而不是FindAll
:
DirectoryInfo directoryInfo = new DirectoryInfo(Server.MapPath(@"/ysyp/Images/Products/"));
var fileList = directoryInfo.GetFiles()
.Where(imageName => string.Compare(imageName.Name,
productDetail.ProductCode + imageName.Extension,
StringComparison.OrdinalIgnoreCase) == 0);
你能以什麼方式它不工作描述?例外?結果中沒有顯示的被忽視文件? – 2011-01-28 15:33:56
你有什麼異常?如果是這樣,什麼? – 2011-01-28 15:35:28