我在这里搜索了一些链接以将嵌套循环更改为单个 Linq,我尝试使用那些,部分代码不起作用,我需要一些专家指导来解决这个问题,
更新 1:
我想我的解释不清楚,循环工作正常!正如预期的那样,我得到了正确的结果,但我正在进行优化,而不是使用两个循环,我需要将相同的代码转换为单个 linq。
代码如下:
foreach (var ob in all_request_list.Where(x => x.StartDate != x.EndDate)) {
int consq_dates = ob.EndDate.DateDiff(ob.StartDate);
for (int i = 0; i <= consq_dates; i++) {
combined_list.Add(new { ShiftID = ob.ShiftID, SkillID = ob.SkillID, EmployeeID = ob.EmployeeID, AssignDate = ob.StartDate.AddDays(i), ProfileID = ob.ProfileID });
}
}
我在将增量变量 i
添加到 ob.StartDate.AddDays(i)
时遇到问题。
我们将不胜感激。
最佳答案
这是您要找的吗?
var items = from ob in all_request_list
where ob.StartDate != ob.EndDate
let consq_dates = ob.EndDate.DateDiff(ob.StartDate)
from i in Enumerable.Range(0, consq_dates + 1)
select new { ShiftID = ob.ShiftID, SkillID = ob.SkillID, EmployeeID = ob.EmployeeID, AssignDate = ob.StartDate.AddDays(i), ProfileID = ob.ProfileID };
combined_list.AddRange(items);
但是:您的代码可以正常工作。你理解那个代码。你为什么不想改变它?顺便说一句:你的两个循环会比那个 linq 更快。
关于c# - 使用 C# 将两个循环转换为单个 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39114685/