c# - 是否可以将所有 'for' 循环替换为 LINQ 语句?

标签 c# linq for-loop

是否可以将以下 'foreach' 编写为 LINQ 语句,我想更一般的问题是可以将任何 for 循环替换为 LINQ 语句。

我对任何潜在的性能成本不感兴趣,只对在传统命令式代码中使用声明性方法的潜力感兴趣。

    private static string SomeMethod()
    {
        if (ListOfResources .Count == 0)
            return string.Empty;

        var sb = new StringBuilder();
        foreach (var resource in ListOfResources )
        {
            if (sb.Length != 0)
                sb.Append(", ");

            sb.Append(resource.Id);
        }

        return sb.ToString();
    }

干杯

AWC

最佳答案

当然。哎呀,您可以用 LINQ 查询替换算术:

http://blogs.msdn.com/ericlippert/archive/2009/12/07/query-transformations-are-syntactic.aspx

但你不应该。

查询表达式的目的是表示查询操作。 “for”循环的目的是迭代特定语句,以便多次执行其副作用。这些通常非常不同。我鼓励用更清晰地查询数据的更高级别的结构来替换其目的仅仅是查询数据的循环。我强烈反对用查询理解替换产生副作用的代码,尽管这样做是可能的。

关于c# - 是否可以将所有 'for' 循环替换为 LINQ 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224012/

相关文章:

C# - 使用 Thread.Sleep() 让我的循环每秒运行数百次

c# - 如何通过 knockout 保存单条记录

c# - 在 C# 中找到两个集合的补集的最快方法

python - 在 python 中使用两个 for 循环

Javascript for 循环对象而不是计数器?

c# - 您将在 .NET Core Web/api 应用程序中的何处实现缓存?

c# - EF Core 到 Mysql 表绑定(bind)

c# - 使用 LINQ 修剪 List<string[]> 中所有字符串的最简单方法?

c# - 如果在嵌套集合上使用 SelectMany,则保留父实例

sql - 日期之前的最新记录,按类别 : optimising