foreach (string f in fileName)
{
if (list.Where(p => p.FileName.Trim().Equals(f.Trim(), StringComparison.OrdinalIgnoreCase)).Count() == 0)
{
ServerpathID = GetSourceServerPath(projectID, out ServerPath);
DellDirectory dir = new DellDirectory(ServerPath);
lstgAFPFileInfo = GetFilesFromSourceServer(new string[] { f }, ServerpathID, SearchOption.TopDirectoryOnly).ToList();
if (lstgAFPFileInfo.Count() != 0)
{
foreach (Service.GAFPFileInfo lstg in lstgAFPFileInfo)
{
projectfile.Checksum = string.Empty;
projectfile.IsAutoDeleted = (autoDelete == true) ? true : false;
projectfile.Size = lstgAFPFileInfo[0].Size;
projectfile.IsArchived = false;
projectfile.ProjectFileId = 0;
projectfile.Language.LanguageId = 1;
projectfile.LastModifyDate = lstgAFPFileInfo[0].LastModified;
projectfile.ProjectPartLink = projectPartLink;
projectfile.FileName = f;
list.Add(projectfile);
}
}
}
}
我在 string[]
文件名中有两个文件 1.txt
和 2.txt
。我正在将这些文件与 db 进行比较,并将值输入 lstgAFPFileInfo
。第一次获取文件名 1.txt
并添加到列表中。第二次它得到值 2.txt
但在将文件添加到列表后它覆盖值 1.txt
并再次添加 2.txt
。现在列表值就像这样 list[0]:2.txt
和 list[1]: 2.txt
有人可以帮忙吗?
最佳答案
这是因为您的循环不断地不断添加相同的对象,所以您的列表最终会包含对同一对象的多个引用。
将 projectfile = new ProjectFile()
添加到循环的顶部以解决此问题。
关于c# - 关于 C# 使用 foreach 循环将对象添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043436/