我有以下内容:
foreach (var x in items)
{
switch (x.name)
{
case firstname1:
case firstname2:
case firstname3: .
x.Value = somemethodcall;
break;
}
}
switch
具有大约15个不同的值要检查。 x
具有3个属性:name
,value
和enum
常数,用于检查x.name
。 items
是具有许多x
常量的enum
对象的集合,但是我只想找到某些常量并应用相同的方法来更改x.value
属性。
是否可以使用linq将我的foreach转换为一个内衬?
答案 0 :(得分:0)
您的代码很长,因为切换而不是foreach。
glGetError
可以写为
switch (x.name)
{
case firstname1:
case firstname2:
case firstname3:
foreach本身可以写为
var names = new []{firstname1, firstname2, firstname3};
if (names.Contains(x.name))
其中
items.Select(SetValueByName);
如果优化不适用于您的情况,只需
string[] names = new []{firstname1, firstname2, firstname3};
TypeOfX SetValueByName(TypeOfX x)
{
if(names.Contains(x.name))
{
x.Value = somemethodcall;
}
return x;
}
答案 1 :(得分:0)
尝试一下
items.ToList().Where(x => x.name == firstname1 || x.name == firstname2).ForEach(x => x.Value = somemethodcall)