更改与拉姆达循环(C#3.0)
是否有可能使用lambda更改与拉姆达循环(C#3.0)
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;
}
我的意思是说改写了使用lambda语句做同样的。我试着用
Enumerable.Range(0,objEntityCode.Count-1).Foreach(i=> {
options.Attributes[i] = new EntityCodeKey();
options.Attributes[i].EntityCode = objEntityCode[i].EntityCodes;
options.Attributes[i].OrganizationCode = Constants.ORGANIZATION_CODE; }
);
但不工作 我使用C#3.0
那么你可以把它与对象初始化简单,入手:
for (int i = 0; i < objEntityCode.Count; i++)
{
options.Attributes[i] = new EntityCodeKey
{
EntityCode = objEntityCode[i].EntityCodes,
OrganizationCode = Constants.ORGANIZATION_CODE
};
}
我可能会离开它虽然...目前没有ForEach
扩展方法IEnumerable<T>
- 和good reasons,虽然我知道这不是普遍持有的意见;)
在这种情况下,你仍然需要知道i
为了设置options.Attributes[i]
- 除非你可以设置整个options.Attributes
一气呵成,当然......不知道有关所涉及的类型,这是相当困难的进一步提醒。
如果options.Attributes
是可写的属性(例如数组),你可以使用:
options.Attributes = objEntityCode.Select(code => new EntityCodeKey
{
EntityCode = code.EntityCodes,
OrganizationCode = Constants.ORGANIZATION_CODE
}).ToArray();
如果options.Attributes
是实际上只是它会返回一个索引,这是行不通的一个类型的属性。
爵士,什么是在下面 Enumerable.Range wrng(0,objEntityCode.Count - 1)。选择(I => {options.Attributes [I] =新EntityCodeKey {EntityCode = objEntityCode [I] .EntityCodes ,OrganizationCode = Constants.ORGANIZATION_CODE}; })。ToArray(); 投掷错误 无法从用法推断方法“System.Linq.Enumerable.Select
您的lambda表达式不会返回任何内容。这只是一个声明。这对选择投影并没有什么帮助......另一个与它“错误”的事情是它无缘无故地引入了一堆东西。 LINQ旨在使代码更简单*,而不是更复杂。 – 2010-05-12 03:26:38
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
};
}
);
做_what_使用Lambda? – 2010-05-12 03:07:34
我的意思是说使用lambda重写语句。 我试着用Enumerable.Range(0,objEntityCode.Count-1).Foreach(i => {options.Attributes [i] = new EntityCodeKey(); options.Attributes [i] .EntityCode = objEntityCode [i]。 EntityCodes; options.Attributes [i] .OrganizationCode = Constants.ORGANIZATION_CODE; });但不起作用 – Newbie 2010-05-12 03:09:49
为什么你想用lambdas来做它?如果你的结构依赖于索引,那么它不适用于List.ForEach()结构和FWIW,循环是编程语言的核心部分......它如何通过*而不是*使用它们来改进你的程序? – jeffora 2010-05-12 03:12:34