Sco*_*ski 5 c# generics predicate findall
我有一个对象列表,我想用整数参数过滤
List<testObject> objectList = new List<testObject>();
// populate objectList with testObjects
objectList.FindAll(GroupLevel0);
private static bool GroupLevel0(testObject item)
{ return item._groupLevel == 0; }
private class testObject
{
public string _FieldSQL = null;
public int _groupLevel;
}
Run Code Online (Sandbox Code Playgroud)
我要做的是让GroupLevel0接受一个整数作为参数而不是硬编码为0.我在.NET 2.0中工作,所以lambda表达式是不行的.甚至可以将参数传递给谓词吗?
谢谢,
如果您坚持使用C#2.0,请使用匿名方法 - 只是略微笨拙的lambda表达式(忽略表达式树):
List<testObject> objectList = new List<testObject>();
int desiredGroupLevel = 10;
objectList.FindAll(delegate (testObject item)
{
return item._groupLevel == desiredGroupLevel;
});
Run Code Online (Sandbox Code Playgroud)
或者您仍然可以使用方法调用来开始:
List<testObject> objectList = new List<testObject>();
int desiredGroupLevel = 10;
objectList.FindAll(CheckGroupLevel(desiredGroupLevel));
...
public Predicate<testItem> CheckGroupLevel(int level)
{
return delegate (testItem item)
{
return item._groupLevel == level;
};
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用的是Visual Studio 2008但是以 .NET 2.0为目标,则仍然可以使用lambda表达式.它只是一个编译技巧,不需要框架支持(同样,忽略表达式树).
| 归档时间: |
|
| 查看次数: |
7689 次 |
| 最近记录: |