2010-07-05 90 views
2

我期待有“我”但得到空结果的字符串。你能告诉我原因吗?新名称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"); }); 

回答

3

不要使用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); 
}