WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用高级篇三:Enumerable.Cast<T>... 阅读

c#扩展方法奇思妙用高级篇三:Enumerable.Cast<T>应用

 2010-09-30 20:50:58 来源:WEB开发网   
核心提示: ListView的Items类型是ListView.ListViewItemCollection,这个ListViewItemCollection实现了IEnumerable,c#扩展方法奇思妙用高级篇三:Enumerable.Cast<T>应用(2),ListView.Items正

ListView的Items类型是ListView.ListViewItemCollection,这个ListViewItemCollection实现了IEnumerable。

ListView.Items正是一个非泛型的集合,因此可以应用Cast<T>。

以下代码假定 listBox 数据绑定在一个Employee的集合上:

1     int count = listBox.Items.Cast<Employee>().Count();
2     bool b = listBox.Items.Cast<Employee>().Any(e => e.FirstName == "Bob");

(当然,如果有Employee的集合的引用,就不用Cast了,这里只是示例)

同样Cast<T>可以用在ComboBox、DataGridView、TreeNode上:

1     //ComboBox
2     var v1 = comboBox.Items.Cast<People>();
3     //DataGridView
4     var v2 = dataGridView.SelectedRows.Cast<DataGridViewRow>();
5     var v3 = dataGridView.SelectedColumns.Cast<DataGridViewColumn>();
6     var v4 = dataGridView.SelectedCells.Cast<DataGridViewCell>();
7     //TreeNode
8     var v5 = treeNode.Nodes.Cast<TreeNode>();

这几个应用中应该第 4 行的应用最多,获取选中行是DataGridView使用最频繁的操作之一。

试看下面代码:

1     //计算平均年龄
2     int age = dataGridView.SelectedRows.Cast<Employee>().Average(p=>p.Age);
3     //统计所在城市
4     string[] cities = dataGridView.SelectedRows.Cast<Employee>().Select(p => p.City).Distinct();

上一页  1 2 3 4  下一页

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接