从列表更新dbEnitity列值 不使用两个foreach循环而没有usinf

问题描述 投票:1回答:2

我有一个类-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));

现在,我有一个数据库,该数据库具有类似名称,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);
        }
    }
c# asp.net .net list entity-framework
2个回答
0
投票

我认为您尝试使用unitofwork !!!

enter link description here


0
投票

您的意思是这个吗?

   listOfFiles = GetListOfFiles()
   .Where(e => pairedValues.Select( x => x.FileName).ToList().Contains(e.fileName))
   .ToList();

   foreach(var file in listOfFiles){
        file.StartTime = pairedValues.where(x=> x.FileName == file.fileName).FirstOrDefault().StartTime;
        file.EndTime = pairedValues.where(x=> x.FileName == file.fileName).FirstOrDefault().EndTime;
   }
© www.soinside.com 2019 - 2024. All rights reserved.