【发布时间】:2013-07-18 01:54:15
【问题描述】:
我需要过滤以下列表以返回以“Group”开头的第一个项目开始的所有项目,直到但不包括以“Group”开头的下一个项目(或直到最后一个项目) .
List<string> text = new List<string>();
text.Add("Group Hear It:");
text.Add(" item: The Smiths");
text.Add(" item: Fernando Sor");
text.Add("Group See It:");
text.Add(" item: Longmire");
text.Add(" item: Ricky Gervais Show");
text.Add(" item: In Bruges");
过滤后,我希望在第一个分组中有以下项目:
"Group Hear It:" " item: The Smiths" " item: Fernando Sor"
以及第二组中的以下项目:
"Group See It:" " item: Longmire" " item: Ricky Gervais Show" " item: In Bruges"
这不起作用,因为我要在第一个排除“项目:”项目的位置过滤列表...我是用 TakeWhile 关闭还是关闭?
var group = text.Where(t => t.StartsWith("Group ")))
.TakeWhile(t => t.ToString().Trim().StartsWith("item"));
【问题讨论】:
-
创建适合您的域的数据结构比根据关键字过滤列表更有意义。