优化代码var P_AreaReportChapterL = Service.GetIQueryable<P_AreaReportChapter>(). Where(A => A.M_TreeId == FromCloneTreeId.ToString()).ToList(); if (P_AreaReportChapterL.Count > 0) { foreach (var P_ReportPermissionSet1 in P_AreaReportChapterL) { P_ReportPermissionSet1.Id = 0; P_ReportPermissionSet1.M_TreeId = ToTreeId.ToString(); } Service.Insert(P_ReportPermissionSetL); }
时间: 2024-02-10 12:05:57 浏览: 74
这段代码存在两个问题需要优化:
1. 在 foreach 循环中,对每个 P_AreaReportChapter 对象的 Id 和 M_TreeId 属性进行了修改,这会导致原始的 P_AreaReportChapterL 列表中的对象也被修改了。这可能会对其他部分代码产生影响。建议在 foreach 循环中,使用副本或者新的对象来进行修改操作,不要直接修改原始列表中的对象。
2. 在最后一行代码中,插入的是 P_ReportPermissionSetL,而不是 P_AreaReportChapterL。这可能会导致数据插入错误的表中。
以下是优化后的代码:
```
var chaptersToInsert = new List<P_AreaReportChapter>();
var chaptersToUpdate = Service.GetIQueryable<P_AreaReportChapter>().Where(A => A.M_TreeId == FromCloneTreeId.ToString()).ToList();
if (chaptersToUpdate.Count > 0)
{
foreach (var chapter in chaptersToUpdate)
{
var newChapter = new P_AreaReportChapter
{
M_TreeId = ToTreeId.ToString(),
// 复制其他属性
};
chaptersToInsert.Add(newChapter);
}
Service.Insert(chaptersToInsert);
}
```
阅读全文