TakeWhile LINQ方法没有给出预期的结果
问题描述:
我期待有“我”但得到空结果的字符串。你能告诉我原因吗?新名称PetOwner {Name =“sen”,Pets = new List {“puppy”,“tiger”}}, jimmy“,”rose“}}
};TakeWhile LINQ方法没有给出预期的结果
var pets = petOwners.SelectMany(p => p.Pets);
var pets1 = pets.TakeWhile<string>(s => { Console.WriteLine(s); return s.Contains("i"); });
答
不要使用TakeWhile
本 - 它一旦遇到该表达式返回false的元素终止循环。改为使用Where
。也只是使用普通的foreach循环来执行输出,而不是将调用WriteLine放入lambda函数中。这使得理解你的代码变得更容易。
var petsContainingI = petOwners.SelectMany(p => p.Pets).Where(s => s.Contains("i"));
foreach (string s in petsContainingI)
{
Console.WriteLine(s);
}