尝试编写一个谓词,根据居住在家中的孩子和成年人的数量找到家庭。知道我可以找到1平方米的价格,并找到清理成本的金额。但是,我无法做出.FindAll的工作
public void Find(List<PriceForCleaning> priceForCleaning)
{
int a = 0;
foreach (var price in priceForCleaning)
{
List<Family> FalimiesBeingWorked = Families.FindAll(nn => nn.AmountOfKids == price.AmountOfKids && nn.AmountOfAdults == price.AmountOfAdults ? nn.HowMuchPayed = nn.AreaOfHome * price.OneSquareMeterCleaningPrice : 0);
}
}
我得到的错误:
错误1无法隐式转换类型&#39; int&#39;到了布尔&#39;
错误2无法将lambda表达式转换为委托类型&#39; System.Predicate&#39;因为块中的某些返回类型不能隐式转换为委托返回类型
答案 0 :(得分:0)
FindAll()
函数接受谓词。
谓词的格式为public delegate bool Predicate<in T>( T obj )
。
因此,您的lambda表达式必须返回bool
。
相反,它会返回int
。
我不确定你想要完成什么,但是你不能混淆&#34;通过住在家里的孩子和成年人的数量找到家庭&#34; 和 &#34;查找清理费用。&#34;
首先进行一项操作,然后进行另一项操作。
答案 1 :(得分:0)
FindAll期待一个谓词。谓词按定义返回bool
,这意味着你的lambda必须返回bool
而不是执行计算。
var foundFamilies = Families.FindAll(nn => nn.AmountOfKids ==
price.AmountOfKids && nn.AmountOfAdults == price.AmountOfAdults);
您可以对foundFamilies
集合中的每个元素执行计算。