我有一个要通过整数参数过滤的对象列表
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;
}
我想做的是让 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;
});
或者您仍然可以使用方法调用来开始:
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;
};
}
如果您使用的是 Visual Studio 2008,但是瞄准但是,在 .NET 2.0 中,您仍然可以使用 lambda 表达式。这只是一个编译器技巧,不需要框架支持(再次忽略表达式树)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)