是否可以使用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;
}
Run Code Online (Sandbox Code Playgroud)
我的意思是说使用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; }
);
Run Code Online (Sandbox Code Playgroud)
但不工作我正在使用C#3.0
那么你可以使用对象初始化器更简单,首先:
for (int i = 0; i < objEntityCode.Count; i++)
{
options.Attributes[i] = new EntityCodeKey
{
EntityCode = objEntityCode[i].EntityCodes,
OrganizationCode = Constants.ORGANIZATION_CODE
};
}
Run Code Online (Sandbox Code Playgroud)
我可能会留下它虽然...目前没有ForEach扩展方法IEnumerable<T>- 并且有充分的理由,虽然我知道它不是普遍持有的意见;)
在这种情况下,你仍然需要知道i为了设置options.Attributes[i]- 除非你可以options.Attributes一次性设置整个,当然......在不知道所涉及的类型的情况下,很难进一步提出建议.
如果options.Attributes是可写属性(例如数组),您可以使用:
options.Attributes = objEntityCode.Select(code => new EntityCodeKey
{
EntityCode = code.EntityCodes,
OrganizationCode = Constants.ORGANIZATION_CODE
}).ToArray();
Run Code Online (Sandbox Code Playgroud)
如果options.Attributes是实际上只是它返回一个类型与索引的属性,这是行不通的.
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |