【发布时间】:2013-10-07 09:19:59
【问题描述】:
我对使用谓词在集合中查找特定内容非常陌生。 这是我的例子:
static void FindPersons(string firstLetter)
{
List<string> names = new List<string>()
{"Marcus", "John", "Jesse", "Lance", "Aaron", "Archibald", "Victor"
};
List<string> names2 = names.FindAll(a => a.StartsWith(firstLetter));
foreach (var name in names2)
{
Console.WriteLine(name);
}
}
我会在 Main 中调用该方法:
FindPersons("a");
我必须使用字符串作为第一个字母,因为 StartsWith 将字符串作为参数(或者我可以使用 char 和 ToString()。
如何使用这种更短的语法来做到这一点? 还有一个问题 - 通常,在您的工作中,您多久使用一次谓词来查找集合中的特定对象? 谢谢。
【问题讨论】:
-
什么你的问题是什么?您可以使用
names.Where(n => n.StartsWith(firstLetter))而不是List.FindAll。但是,这并没有太大的区别。您的第二个问题只是基于意见。 -
Nit pick:
FindPersons应该返回列表。PrintPeople应该写到控制台.. -
names.FindAll(a => a.StartsWith(firstLetter)).ForEach(Console.WriteLine);
标签: c# .net generics predicate