请查看 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/