C# 3.0 使用lambda(C3.0)更改for循环

C# 3.0 使用lambda(C3.0)更改for循环,c#-3.0,C# 3.0,是否可以使用Lambda执行相同的操作 for (int i = 0; i < objEntityCode.Count; i++) { options.Attributes[i] = new EntityCodeKey(); options.Attributes[i].EntityCode = objEntityCode[i].EntityCodes; options.Attributes[i].OrganizationCode = Constants.ORGANI

是否可以使用Lambda执行相同的操作

for (int i = 0; i < objEntityCode.Count; i++)
{
    options.Attributes[i] = new EntityCodeKey();
    options.Attributes[i].EntityCode = objEntityCode[i].EntityCodes;
    options.Attributes[i].OrganizationCode = Constants.ORGANIZATION_CODE;
}
但不起作用
我使用的是C3.0,您可以使用对象初始值设定项使其更简单,首先:

for (int i = 0; i < objEntityCode.Count; i++)
{
    options.Attributes[i] = new EntityCodeKey
    {
        EntityCode = objEntityCode[i].EntityCodes,
        OrganizationCode = Constants.ORGANIZATION_CODE
    };
}

如果options.Attributes实际上只是一个返回带有索引器的类型的属性,那么这将不起作用。

首先,您可以使用对象初始值设定项简化操作:

for (int i = 0; i < objEntityCode.Count; i++)
{
    options.Attributes[i] = new EntityCodeKey
    {
        EntityCode = objEntityCode[i].EntityCodes,
        OrganizationCode = Constants.ORGANIZATION_CODE
    };
}
Enumerable.Range(0, objEntityCode.Count - 1).ToList().ForEach(i => 
                {
                    options.Attributes[i] = new EntityCodeKey(); 
                    options.Attributes[i].EntityCode = objEntityCode[i].EntityCodes;
                    }
                );

如果options.Attributes实际上只是一个返回带有索引器的类型的属性,那就行不通了。

我的意思是使用lambda重写语句。我尝试使用Enumerable.Range0,objEntityCode.Count-1.Foreachi=>{options.Attributes[I]=new EntityCodeKey;options.Attributes[I]。EntityCode=objEntityCode[I]。EntityCodes;options.Attributes[I]。OrganizationCode=Constants.OrganizationCode;};但是不工作为什么你想用lambdas来做呢?如果你的结构依赖于索引,那么它就不适合列表。ForEach结构和FWIW循环是编程语言的核心部分……它如何通过不使用它们来改进你的程序?它不值得尝试。可以使用lambdas重写它。。。只是为了教育目的,这是你的权利。我基本上只想这么说。但是,我解决了。我的意思是用lambda重写语句。我尝试使用Enumerable.Range0,objEntityCode.Count-1.Foreachi=>{options.Attributes[I]=new EntityCodeKey;options.Attributes[I]。EntityCode=objEntityCode[I]。EntityCodes;options.Attributes[I]。OrganizationCode=Constants.OrganizationCode;};但是不工作为什么你想用lambdas来做呢?如果你的结构依赖于索引,那么它就不适合列表。ForEach结构和FWIW循环是编程语言的核心部分……它如何通过不使用它们来改进你的程序?它不值得尝试。可以使用lambdas重写它。。。只是为了教育目的,这是你的权利。我基本上只想这么说。然而,我解决了。我将补充我对你的问题所做的相同评论:你为什么要这样做?这比显式地编写循环更好吗?先生,我正在学习LINQ和LAMBDA。。。。从今往后,我试着写下这些陈述我将补充我对你的问题所作的相同评论:你为什么要这样做?这比显式地编写循环更好吗?先生,我正在学习LINQ和LAMBDA。。。。从今往后,我试着写下这些陈述先生,下面的Enumerable.Range0,objEntityCode.Count-1.Selecti=>{options.Attributes[i]=new EntityCodeKey{EntityCode=objEntityCode[i]。EntityCodes,OrganizationCode=Constants.ORGANIZATION_CODE};}.ToArray;引发错误无法从用法推断方法“System.Linq.Enumerable.SelectSystem.Collections.Generic.IEnumerable,System.Func”的类型参数。尝试显式指定类型参数。lambda表达式不返回任何内容。这只是一个声明。这对选择投影没有帮助。。。它的另一个缺点是它无缘无故地引入了一大堆东西。LINQ旨在使代码更简单,而不是更复杂。先生,下面的Enumerable.Range0,objEntityCode.Count-1.Selecti=>{options.Attributes[i]=new EntityCodeKey{EntityCode=objEntityCode[i]。EntityCodes,OrganizationCode=Constants.ORGANIZATION_code};}.ToArray;引发错误无法从用法推断方法“System.Linq.Enumerable.SelectSystem.Collections.Generic.IEnumerable,System.Func”的类型参数。尝试显式指定类型参数。lambda表达式不返回任何内容。这只是一个声明。这对选择投影没有帮助。。。它的另一个缺点是它无缘无故地引入了一大堆东西。LINQ旨在使代码更简单,而不是更复杂。
Enumerable.Range(0, objEntityCode.Count - 1).ToList().ForEach(i => 
                {
                    options.Attributes[i] = new EntityCodeKey(); 
                    options.Attributes[i].EntityCode = objEntityCode[i].EntityCodes;
                    }
                );
Enumerable.Range(0, objEntityCode.Count - 1).ToList().ForEach(i => 
                {
                    options.Attributes[i] = new EntityCodeKey
                    {
                         EntityCode = objEntityCode[i].EntityCodes
                         , OrganizationCode = Constants.ORGANIZATION_CODE  
                    }; 

                }
             );