我正在处理C#2.0 / .NET 2.0中的一个问题,该问题中我有一个Sortedlist,并且想要在此SortedList的所有“值”(而不是“键”)中搜索某个子字符串,并计算有多少次出现。

这就是我想要做的:

{
   Sortedlist<string,string> mySortedList;
   // some code that instantiates mySortedList and populates it with data
   List<string> myValues = mySortedList.Values;  // <== does not work
   int namesFound = myValues.FindAll(ByName(someName)).Count;
}


自然,这是行不通的,因为mySortedList.Values返回一个IList,而“ myValues”是一个List。我尝试“广播”该IList,以便它可以被myValues接受,但是它似乎不起作用。

当然,我可以在“ foreach”循环中循环mySortedList.Values,但是我并不是真的想要这样做。

有人有什么建议吗?

EDIT-1:好的,似乎没有本机的方法可以轻松地做到这一点。我以为我只是想念一些东西,但显然我没有。所以我想我将对IList进行“ foreach”操作。

感谢大家的反馈!我投票给所有人1票,因为我认为所有反馈都很好。再次感谢! :-)

EDIT-2:看起来CMS具有我想要的答案。对此,唯一的警告(如Qwertie所指出的那样)是潜在的性能损失,因为它涉及将所有值复制到另一个List,然后从头开始搜索该列表。因此,对于简短列表,此答案是有效的。更长的清单?好吧,这取决于您决定...

最佳答案

由于IList Interface实现了IEnumerable,因此实际上您可以使用List<T>获得值的List<T> (IEnumerable) Constructor

List<string> myValues = new List<string>(mySortedList.Values);

关于c# - 如何在IList <T>上执行FindAll()? (例如SortedList.Values),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/617374/

10-12 18:21