gpt4 book ai didi

c# - 如果 Predicate 返回 true,Lambda 表达式返回什么

转载 作者:行者123 更新时间:2023-11-30 14:34:15 25 4
gpt4 key购买 nike

如果谓词的条件为真,是否返回参数 fruit(我知道这是一个输入参数),我感到很困惑。正如下面一段代码所表示的:

List<string> fruits = new List<string> {
"apple",
"passionfruit",
"banana",
"mango",
"orange",
"blueberry",
"grape",
"strawberry"
};

IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 8);
// query contains: {apple,banana,mango,orange,grape}

IEnumerable<string> query2 = query.Where(fruit => fruits.Contains("apple"));

foreach (string fruity in query2)
{
Console.WriteLine(fruity);
}

// finally returns: {apple,banana,mango,orange,grape}

因此,如果条件为真,则似乎返回了输入。

如有错误请指正

最佳答案

Where 返回谓词返回 true 的输入的过滤序列。它依次应用于每个元素,该项目要么被放弃,要么被丢弃。基本上:

public static IEnumerable<T>(this IEnumerable<T> source, Func<T,bool> predicate)
{
foreach(var el in source) {
if(predicate(el) {
yield return el;
}
}
}

看名字:

IEnumerable<string> query2 = query.Where(fruit => fruits.Contains("apple"));

这就是说,对于每个 fruit,查看整个集合(fruits,注意最后的 ) 返回一个苹果。列表 fruits 确实包含apple,因此对于每种水果都是如此。

你的意思可能是:

IEnumerable<string> query2 = query.Where(fruit => fruit.Contains("apple"));

关于c# - 如果 Predicate 返回 true,Lambda 表达式返回什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353613/

25 4 0