C# 从列表中更新dbeninity列值<;MyClass>;不使用两个foreach循环
我有一个类-PairedValues.cs,代码如下: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)
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-感谢您的帮助。