我有一个类似于下面的LINQ函数:
public static Func<Contact, bool> activeContactsFilter = c =>
!c.suspended &&
!c.expired &&
(c.status_id == 1 || c.status_id == 7);
当我需要找出IEnumerable
个联系人中哪些联系人处于“有效状态”时,此功能非常有用:
var activeContacts = allContacts.Where(activeContactsFilter);
但是如果我想检查一个特定联系人是否“有效”怎么办?如何在单个对象上使用相同的函数进行测试?
答案 0 :(得分:6)
这非常简单 - 只需调用Func
,就像它一样功能:
bool contactIsActive = activeContactsFilter(contactToCheck);
Func
与LINQ无关,它们只是对LINQ有用。您可以将方法存储在正确类型的Func
中,并且(如上所述)您可以像方法一样调用Func
。
有关Func
的更多信息,请查看here。