我试图找出在linq .Where()调用的lambda中使用匿名函数的语法。lambda中的C#匿名函数
我正在使用“从哪里”筛选列表中的某些项目。
我希望过滤器逻辑的每个部分在Where里面。该逻辑仅在过滤器内部有用,所以我不想在外面定义任何功能。
这里有一个简单的&广义例如:
var filtered = myEnumerable.Where(item =>
item.PropertyA == 1 ||
item.PropertyB == 2 ||
item =>
{
var heavyResult = GetStuff(item); // Some heavyweight processing
return heavyResult.IsSomethingTrue() && heavyResult.IsSomethingElseTrue();
});
所以我想在哪里第三行()是一个匿名函数取项目,并返回一个布尔值。
此外,在对PropertyA和PropertyB进行检查之后调用的函数旨在限制必须调用GetStuff(),如果这些轻量级比较中的任何一个已经评估为true。
我不能这样做所有内联,因为我需要评估来自heavyResult的两个属性。
这似乎应该很简单,但我似乎无法通过试验或谷歌搜索找到正确的语法。
其实我怀疑这是否是真实的情景?你可以用更简单的方法做到这一点 –
虽然你可以做到这一点,但我怀疑你应该*,因为它只是增加了记录函数功能的必要性。取而代之的是提取一个具有描述性名称的命名方法,以确定该方法中发生了什么。 – HimBromBeere