我正在使用C#,Silverlight,Visual Studio for Windows Phone 7.
我目前有一个包含通用UIElement的List,我可以把TextBlock或Grid或StackPanel这样的东西放到List中.
例如:
List<UIElement> UIList= new List<UIelement>();
UIList.Add(someUIObject as UIElement);
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有一种有效的方法来计算列表中对象类型的数量?例如,如果有8个TextBlocks和4个Grids,我想知道List中有2个对象类型.或者,如果有1个TextBlock,1个Grid和1个StackPanel,我想知道有3种类型的对象.
我正在寻找比O(n ^ 2)性能更好的东西.我当前的解决方案将每个元素类型与List中的其他元素类型进行比较,类似于BubbleSort.
为了获得集合中不同类型的数量,我将使用LINQ首先选择每个对象的类型,然后只采用不同类型并计算:
int numberOfTypes = UIList.Select(x => x.GetType()).Distinct().Count();
Run Code Online (Sandbox Code Playgroud)
所有这些都是O(n),因为Distinct()使用哈希表.
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |