从列表中更新 dbEnitity 列值<MyClass>,而不使用 usinf 两个 foreach 循环



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

现在,我有一个数据库,其中包含类似的列,例如名称,开始时间,结束时间,我需要从配对值更新此表,因此我正在循环浏览配对值列表并尝试执行以下操作:

foreach (var val in pairedValues)
{           
listOfFiles = GetListOfFiles()
.Where(e => e.fileName == val.FileName)
.ToList();
}

我想更新 listofFiles 中每列的值 来自配对值的文件,我可以使用另一个 foreach 来做到这一点,但是如何避免这种情况?任何建议将不胜感激。

保存到下面的数据库代码:

public void SaveDetails(List<MyDbTable> listOfFiles)
{
_Entity.MyTable.AddRange(listOfFiles);
try
{
_Entity.SaveChanges();
}
catch (DbUpdateException ex)
{
Console.WriteLine(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-林克

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);
});
});

希望这有帮助!

附言我没有使用编写代码的编译器,所以请原谅任何拼写错误。

最新更新