[英]How optimize this code use lambda expression
我有代码:
protected void Method1(List<SomeClass> mylist)
{
foreach(var item in mylist)
{
if (!SomeClass.Validate(item))
{
continue;
}
DoStuff(item);
}
}
protected void Method2(List<SomeClass> mylist)
{
foreach(var item in mylist)
{
if (!SomeClass.Validate(item) || item.Value == 0)
{
continue;
}
DoStuff(item);
}
}
如何组织这两种方法?
它们的区别仅item.Value == 0
可以使用lambda表达式。
我不知道
protected void Method(List<SomeClass> mylist, Func<SomeClass, bool> filter)
{
var selectedItem = mylist.Where(filter);
foreach (var item in selectedItem)
DoStuff(item);
}
因此,您可以使用:
Method(mylist, item => (SomeClass.Validate(item) && item.Value != 0));
要么:
Method(mylist, item => SomeClass.Validate(item));
如果我了解您的需求,那么代码应如下所示。
protected void CommonMethod(List<SomeClass> mylist, Func<SomeClass, bool> predicate)
{
foreach(var item in mylist)
{
if (predicate(item))
{
continue;
}
DoStuff(item);
}
}
Func<SomeClass, bool> method1Predicate = (SomeClass item) => !SomeClass.Validate(item);
Func<SomeClass, bool> method2Predicate = (SomeClass item) => !SomeClass.Validate(item) || item.Value == 0;
关于什么:
protected void Method<T>(List<T> mylist, Func<T, bool> predicate)
{
var result = mylist.Where(predicate);
foreach(var item in result)
DoStuff(item);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.