c# - 使用 C# 将两个循环转换为单个 LINQ 查询

标签 c# .net linq for-loop

我在这里搜索了一些链接以将嵌套循环更改为单个 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/

相关文章:

c# - 使用 Cray aprun 命令运行单声道应用程序

c# - 我如何解析挪威货币

c# - LINQ 按多列搜索

c# - 更聪明的where子句?

c# - 如何防止 UserControl 的使用者看到该控件的子控件?

c# - WPF 动画不适用于 "fast"属性更改

C# .net Core - 获取磁盘上的文件大小 - 跨平台解决方案

c++ - 如何将指针函数从 C++ 导出到 C#?

c# - 尽管 GetEnumerator 和 foreach 运行良好,但为什么我不能使用 OrderBy?

C# 比较 Dictionary<string, int> 和 enter 中的值