在 C# 中向通用列表的 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;
}
我想做的是让 GroupLevel0 接受整数作为参数,而不是硬编码为 0。我正在 .NET 2.0 中工作,所以 lambda 表达式是不行的。 是否可以将参数传递到谓词中?
谢谢你,
I have a list of objects that I want to filter by an integer parameter
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;
}
What I'm looking to do is to make GroupLevel0 take in an integer as a parameter instead of hardcoding to 0. I'm working in .NET 2.0 so lambda expressions are a no-go. Is it even possible to pass a parameter into a predicate?
Thank you,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您坚持使用 C# 2.0,请使用匿名方法 - 只是稍微笨重的 lambda 表达式(忽略表达式树):
或者您仍然可以使用方法调用来开始:
如果您使用的是 Visual Studio 2008,但是 但是,以 .NET 2.0 为目标,您仍然可以使用 lambda 表达式。 这只是一个编译器技巧,不需要框架支持(再次忽略表达式树)。
If you're stuck with C# 2.0, use an anonymous method - just a slightly clunkier lambda expression (ignoring expression trees):
Or you could still use a method call to start with:
If you're using Visual Studio 2008 but targeting .NET 2.0, however, you can still use a lambda expression. It's just a compiler trick which requires no framework support (again, ignoring expression trees).
这是一个匿名委托,它关闭其父级的词法范围,因此它可以看到“groupLevel”。
适用于 C# 2.0 及更高版本。 如果您将来迁移到 .NET 3.5,我建议您使用 lambda。
This is an anonymous delegate, it closes over the lexical scope of its parent, so it can see "groupLevel".
Works in C# 2.0 and above. I'd recommend using a lambda if you move to .NET 3.5 in the future.
另外,如果您使用 VS 2008,则在编译到 2.0 时仍然可以使用 lambda。 它使用 3.5 编译器和 2.0 目标,我们已经使用它几个月了。
Also, if you use VS 2008, you can still use lambdas when compiling to 2.0. It uses the 3.5 compiler with a 2.0 target, and we've been using it for months.