public class Part
{
public String VendorId { get; set; }
public String VendorPart { get; set; }
public String BasePart { get; set; }
public String Description { get; set; }
public ImageViewType View { get; set; }
}
private List<Part> partList = null;
private bool deleteOldFile = false;
我很好奇以下代码的工作原理(一旦partList
加载了数据):
foreach (Part p in partList)
{
deleteOldFile = ((partList.Last().BasePart) == (p.BasePart));
MoveFile(FileType.Image, p, GetSetImageFile(imageBox1, currentFile));
}
以下内容不起作用(永远不会将布尔deleteOldFile
设置为true):
foreach (Part p in partList)
{
deleteOldFile = (partList.Last().BasePart == p.BasePart);
MoveFile(FileType.Image, p, GetSetImageFile(imageBox1, currentFile));
}
答案 0 :(得分:1)
这两个选项之间没有区别。问题的原因可能是因为您每次迭代都会覆盖deleteOldFile
的值。我想你想写这个:
foreach (Part p in partList)
{
deleteOldFile = deleteOldFile || partList.Last().BasePart == p.BasePart;
MoveFile(FileType.Image, p, GetSetImageFile(imageBox1, currentFile));
}
答案 1 :(得分:1)
您正在为列表中的ebvery项重置deleteOldFile
。
如果你想删除文件,如果任何项目与最后一项相同,(当然最后一项本身除外,它总是与自身相同),然后改为:< / p>
var deleteFile = false;
var last = partList.Last();
foreach (Part p in partList)
if (p.Equals(last) || deleteOldFile = (p.BasePart == last.BasePart))
break;