c# - 关于 C# 使用 foreach 循环将对象添加到列表

标签 c#

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.txt2.txt。我正在将这些文件与 db 进行比较,并将值输入 lstgAFPFileInfo。第一次获取文件名 1.txt 并添加到列表中。第二次它得到值 2.txt 但在将文件添加到列表后它覆盖值 1.txt 并再次添加 2.txt。现在列表值就像这样 list[0]:2.txtlist[1]: 2.txt 有人可以帮忙吗?

最佳答案

这是因为您的循环不断地不断添加相同的对象,所以您的列表最终会包含对同一对象的多个引用。

Illustration

projectfile = new ProjectFile() 添加到循环的顶部以解决此问题。

关于c# - 关于 C# 使用 foreach 循环将对象添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043436/

相关文章:

c# - 无法从 Azure Function 应用程序的 Nuget 安装 ApplicationInsights

c# - 如何使用 LINQ to XML 将新元素添加到 Windows Phone 7 上的现有 XML 文件?

c# - WPF 中的 OpenGL 控件因 OOM 异常而崩溃

c# - XAML 检测 ListView 项目是否获得焦点

c# - 在新记录中自动设置日期时间

c# - 如何使用 AWS cognito 在 .net 上使用忘记密码自定义模板?

c# - ID为 'UpdatePanel1'的控件需要页面上有ScriptManager

c# - Webdriver 无法单击带有证书错误页面的弹出窗口

c# - 如何使用 C# 读取德语和法语特殊字符

c# - 如何使用 LINQ to object 从对象集合中获取第二个重复项