请查看 Linqpad 中的以下代码并告诉我为什么它返回 0 个项目而不是 1 个项目。

void Main()
{
    string[] strArray = {"apple", "banana", "cherry", "e"};
    List<string> lst = strArray.ToList();

    //count all occurences of variable alphabet "e" in LINQ

    //tip is to get the occurences of letter "e" in each word
    // and then total them together

    var lst2 = lst.TakeWhile(c=>c.Equals("banana")).Select(c=>c);

    Console.WriteLine(lst2);
}

上面的代码没有像我期望的那样在 linqpad 中返回 1 个项目。相反,它返回 0 个项目。应返回包含 1 个项目“香蕉”的列表。为什么不呢?

最佳答案

只要条件为真,TakeWhile 就会采用元素。在您的情况下,它一开始是错误的,因为它评估 if ("apple" == "banana") 而不是 TakeWhile 停止。

如果您将元素“香蕉”放在开头,它将起作用。

string[] strArray = {"banana", "apple", "cherry", "e"};

另外,你只能写。
 var lst2 = lst.TakeWhile(c=>c.Equals("banana"))

选择是没有用的。

关于C# Linq List<string> takewhile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31881719/

10-10 23:02