C# 从列表中更新dbeninity列值<;MyClass>;不使用两个foreach循环

C# 从列表中更新dbeninity列值<;MyClass>;不使用两个foreach循环,c#,asp.net,.net,list,entity-framework,C#,Asp.net,.net,List,Entity Framework,我有一个类-PairedValues.cs,代码如下: public class PairedValues { public string FileName { get; set; } public DateTime StartTime { get; set; } public DateTime EndTime { get; set; } public PairedValues(string val1, DateTime val2, DateTime val3)

我有一个类-PairedValues.cs,代码如下:

public class PairedValues
{
    public string FileName { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }

    public PairedValues(string val1, DateTime val2, DateTime val3)
    {
        FileName = val1;
        StartTime = val2;
        EndTime = val3;
    }

    public PairedValues() { }
}
在我的另一种方法中,我将文件名、开始时间和结束时间添加到列表中:

pairedValues.Add(new PairedValues(name, startTime, endTime));
现在,我有一个数据库,它具有类似的列,如name、startTime、EndTime,我需要从pairedValues更新此表,因此我正在循环遍历pairedValues列表,并尝试执行以下操作:

 foreach (var val in pairedValues)
 {           
     listOfFiles = GetListOfFiles()
         .Where(e => e.fileName == val.FileName)
         .ToList();
 }
我想从pairedValues更新listofFiles中每个列的值,我可以使用另一个foreach来完成,但是如何避免呢?如有任何建议,将不胜感激

保存到数据库代码如下:

  public void SaveDetails(List<MyDbTable> listOfFiles)
    {
        _Entity.MyTable.AddRange(listOfFiles);

        try
        {
            _Entity.SaveChanges();
        }
        catch (DbUpdateException ex)
        {
            Console.WriteLine(ex);
        }
    }
public void SaveDetails(列表文件)
{
_Entity.MyTable.AddRange(listOfFiles);
尝试
{
_Entity.SaveChanges();
}
捕获(DbUpdateException ex)
{
控制台写入线(ex);
}
}

如果我理解正确

您有一个配对值列表,对于每个配对值,文件名
GetListOfFiles
方法可能返回一个或多个MyTable类型的记录

在这种情况下,需要使用嵌套循环,或者如果需要,可以使用Linq

1-嵌套循环

 foreach (var val in pairedValues)
 {           
        foreach(var file in GetListOfFiles().Where(x=>x.fileName == 
         val.FileName).ToList())
         {
            //Create new record here (we don't know the property names)
            var newRecord = new MyTable();
            newRecord.FileName = file.Filename // or whater 

             //TODO Now add the new record to 
              _Entity.MyTable.Add(newRecord);
         }

 }
_Entity.SaveChanges();  // save outside the loop to reduce the database roundtrips..
2-Linq

pairedValues.forech(x=> {
    x.GetListOfFiles()
     .Where(e => e.fileName == val.FileName)
     .ToList().foreach(y=> {
          //Create new record here (we don't know the property names)
          var newRecord = new MyTable();
          newRecord.FileName = y.Filename // or whater 

         //TODO Now add the new record to 
          _Entity.MyTable.Add(newRecord);
      });
});
希望这有帮助


注:我没有使用编译器编写代码,因此请原谅任何打字错误。

为什么问题中缺少问题的中心代码(假定为循环的第二个?@licenstia-感谢您的帮助。