C# 通过Lambda表达式赋值?

C# 通过Lambda表达式赋值?,c#,.net,lambda,C#,.net,Lambda,我知道以下引述: 原因是lambda表达式可以转换为委托类型或表达式树,但它必须知道哪种委托类型。仅仅知道签名是不够的 问题是我仍在思考如何解决我的问题 有人能告诉我下面的情况是否可能吗 bool isStaff = () => { return selectedPerson.PersonType == "Staff"; }; 错误: 无法将lambda表达式转换为类型“bool”,因为它不是委托类型 我理解这个错误,但我真的很想知道如何解决这个问题,因为我已经多次摆脱了这个错误,只是没

我知道以下引述:

原因是lambda表达式可以转换为委托类型或表达式树,但它必须知道哪种委托类型。仅仅知道签名是不够的

问题是我仍在思考如何解决我的问题

有人能告诉我下面的情况是否可能吗

bool isStaff = () => { return selectedPerson.PersonType == "Staff"; };
错误:

无法将lambda表达式转换为类型“bool”,因为它不是委托类型

我理解这个错误,但我真的很想知道如何解决这个问题,因为我已经多次摆脱了这个错误,只是没有学会如何正确地使用lamda表达式

感谢各位的快速回复:

在国际海事组织,如果能做到以下几点,那就太棒了:

bool isStaff = (selectedPerson, bool) => { return selectedPerson.PersonType == "Staff"; };
哈哈,我不认为这是可行的,但在代码行中很漂亮,对我来说,这看起来很棒,也正是我所期望的。下面的答案似乎暗示了另一种情况,哈哈

bool isStaff = selectedPerson.PersonType == "Staff";

Func isStaffDelegate=selectedPerson=>
selectedPerson.PersonType==“员工”;
bool isStaff=isStaffDelegate(selectedPerson);

正如编译器所说,您需要分配给委托或表达式树类型。例如:

Func<bool> isStaff = () => selectedPerson.PersonType == "Staff";
Func isStaff=()=>selectedPerson.PersonType==“Staff”;

现在您还没有解释您真正想要做什么,或者什么是
selectedPerson
。上面将捕获
selectedPerson
变量-但实际上您可能需要一个
Func
,根据_ajp的回答。

问题是lambda在计算时返回
bool
,但它本身不是
bool

您可以执行以下操作:

Func<bool> func = () => { return selectedPerson.PersonType == "Staff"; };
bool isStaff = func();
Func-Func=()=>{return selectedPerson.PersonType==“Staff”};
bool-isStaff=func();

这会将lambda分配给一个变量,然后可以使用该变量调用lambda,然后返回所需的
bool
值。

当lambda表达式作为一种速记语法在市场上销售时,我真的很恼火,但在某些情况下,它一点也不简单和直接。@Ibramumtaz:它们比其他选项短-尽管我不明白为什么您喜欢接受答案中的版本,使用大括号和返回语句,而不是这里更简洁的版本。这是一个符合我的视觉眼睛!现在也教了我怎么做。你的代码对我来说毫无意义。Lambda表示某个函数(无论是以实际函数的形式还是以表达式的形式),您希望如何将类似的内容分配给
bool
?那该怎么办呢?从技术上讲,我每天都会使用前半段时间,但现在在StackOverflow.com上问一两个问题来尝试学习一些东西是值得的。在上半场简单而直接的情况下,后半场如何更有效。
Func<bool> func = () => { return selectedPerson.PersonType == "Staff"; };
bool isStaff = func();