`
灵雨飘零
  • 浏览: 34951 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

说说.NET中忽视的方法

 
阅读更多

.NET中有些方法以前没有接触过,但用过了之后让人眼前一亮,哇,原来你这么好用。

下面就说说被我忽视过的方法。当然,每个人的编程经历,涉猎面及对.NET的认知程度都不一样。所以,这只是一家之言,肯定有很多不足之处,欢迎大家批评指正。

1. ADO.NET类

DataTable.Merge()

如何合并两张表?自己以前写的方法:

private void UniteTable(DataTable sourceTable, DataTable targetTable)
        {
            foreach (DataRow row in sourceTable.Rows)
            {
                DataRow newRow = targetTable.NewRow();
                //将sourceTable中row的值赋给对应的targetTable中的row
                newRow["column1"] = row["column1"];
                //...
                targetTable.Rows.Add(newRow);
            }
        }

哎,这个方法很傻很天真吧,其实DataTable中早就提供了合并两张表的方法,就是DataTable.Merge()。合并两张表,只要一条语句就行:

targetTable.Merge(sourceTable);

DataRow.ItemArray

结构相同的情况下,如何将一行的值赋给另一行?自己以前都这样写:

            DataRow row1 = table1.Rows[0];
            DataRow row2 = table2.Rows[0];
            row1["column1"] = row2["column1"];
            row1["column2"] = row2["column2"];
            //...


老天,要是有30多个列我可怎么办。其实DataRow有个ItemArray属性,只要一句话就完成了:

row1.ItemArray = row2.ItemArray;

SqlCommand.Parameters.AddWithValue()

SqlCommand执行存储过程的时候怎么增加参数,类似这样做就可以了:

                //设置参数名和类型
                cmd.Parameters.Add("@Target", SqlDbType.NChar);
                cmd.Parameters.Add("@Description", SqlDbType.NChar);
                cmd.Parameters.Add("@Actor", SqlDbType.NChar);
                //给参数赋值
                cmd.Parameters[0].Value = "ATarget";
                cmd.Parameters[1].Value = "Description";
                cmd.Parameters[2].Value = "Actor";

上面都分了两步,增加参数,然后再给参数赋值,其实我们可以一步到位的:
                cmd.Parameters.AddWithValue("@Actor", "Actor");
                cmd.Parameters.AddWithValue("@Target", "Target");
                cmd.Parameters.AddWithValue("@Description", "Description");



2. 集合类

List.AddRange()

怎么在List中怎样添加多个值,曾经的我是这样子的:

List<int> list = new List<int>();
            list.Add(1);
            list.Add(2);
            list.Add(3);
            list.Add(4);

其实完全可以用一个方法就搞写,它就是AddRange().(在很多类中都有AddRange(),这里我只是用LIST来举例)
list.AddRange(new int[] { 1,2,3,4});
List.Find()与List.FindAll()


在List中查找特定值?以前我都是这样做:
 foreach (int i in list)
            {
                if (i == 3)
                {
                    Console.Write(i);
                }
            }

其实完全可以不用foreach循环,用Find()就可以很好的解决:(FindAll()与Find()用法相似)
int result = list.Find(delegate(int i) { return i == 3; });

3 控件类

DataGridView.HitTest()

DataGridView中如何获取当前鼠标位置所在的行数与列数?我认为DataGridView会有这样的方法,但找了很久都没找到。终于工夫不负有心人,在VS智能提示下点点终于找到了。只怪这坑爹的命名HitTest?为毛不是Get,Find,Index之类开头啊。返回值还是一个内部类:DataGridView.HitTestInfo

//捕获鼠标点击区域的信息
            DataGridView.HitTestInfo hitTestInfo= this.sourceGrid.HitTest(e.X, e.Y);
            //获取所在行数
            int rowIndex = hitTestInfo.RowIndex;
            //获取所在列数
            int columnIndex = hitTestInfo.ColumnIndex;
ListBox.IndexFromPoint()


同样的,ListBox也有一个根据Point来获取行数的方法,即IndexFromPoint().你看,这个命名好多了:

// Get the index of the item the mouse is below.
           indexOfItemUnderMouseToDrag = ListDragSource.IndexFromPoint(e.X, e.Y);

4.其它

进制转换.

以前做进制转换,比如十六进制转八进制,还自己写过一个独立的方法。坑爹的,其实远不用这么麻烦,Convert.ToInt32()与string.Format()都有提供重载方法来实现:

//将十六进制“10”转换为十进制i
            int i = Convert.ToInt32("10", 16);
            //将十进制i转换为十六进制s
            string s = string.Format("{0:X}", i);


PS.我这里只提供示例,关于上面提到方法的详细应用大家可以自行百度。

分享到:
评论

相关推荐

    C#第一章 深入.Net框架学习方法技巧

    C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#...

    .net 2008 破解方法

    .net 2008 破解方法 帮助大家正确安装.net 2008软件

    .net事件调用方法.docx

    .NET 事件调用方法是指在 web 페이지中调用 .NET 框架的方法,以实现网页与 .NET 之间的交互。在本文中,我们将详细介绍如何使用 JavaScript 代码在 web 页面中调用 .NET 方法,从而实现网页退出屏保的逻辑。 一、...

    用java调用.net接口的方法

    总的来说,调用.NET接口在Java中可以通过标准Web服务方式或RESTful接口实现,选择哪种方法取决于.NET接口的具体设计和项目需求。熟悉这些技术对于提高跨平台开发的效率至关重要。记得在实际应用中,一定要确保兼容性...

    在windows server上安装.net framework 3.5方法

    在 Windows Server 上安装 .NET Framework 3.5 方法 .NET Framework 3.5 是 Microsoft 推出的一个软件框架,旨在提供一个统一的编程模型和一组类库,帮助开发者快速构建 Windows 应用程序。然而,在 Windows Server...

    Ext.NET中文API

    Ext.NET中文API ext.net中文API接口说明,主要介绍ext.net下各个类的基本属性和方法及其简单用法

    vb.net 连接数据库方法

    vb.net连接数据库的方法,vb.net连接数据库的方法,vb.net连接数据库的方法,

    .NET LOCK使用方法

    .NET LOCK使用方法 网上收集,版权为原作者所有,谢谢

    vb.net 实现拍照方法

    自己项目中一个类源码。vb.net实现拍照方法,照片可以添加文字内容,可保存到指定文件夹,保存为指定文件,或导出二进制文件

    asp.net前台调用后台方法传参数

    - `(""+strid+"")%&gt;`:这是ASP.NET中的服务器端代码插入方式,表示将执行`ButtShow`方法并将结果插入到当前位置。 - **C#部分**: - `public string strid = "000";`:定义了一个公共字符串变量`strid`并初始化为`...

    3 .NET程序调试方法.EXE

    3 .NET程序调试方法.EXE程序调试方法.EXE

    Ext.net中文API

    Ext.net中文API,详细的介绍ext.net 的每个属性的作用!

    asp.net中五种页面传值方法

    asp.net中五种页面传值方法,熟悉使用的五种页面传值方法的使用,对你开发网站有大的帮助的

    S7.NET中文说明书.pdf

    具体的连接和断开连接的方法会在S7.NET的文档中有详细介绍。 #### 六、其他功能介绍 除了基本的连接和数据交换功能外,S7.NET还提供了一系列高级特性,如: - **读写PLC内存**: 支持读取和写入PLC的数据块、变量等...

    .NET6.0官方中文文档.pdf

    在.NET 6.0的概述中,我们了解到.NET的架构组件,包括.NET类库、.NET Standard,以及它们之间的关系。.NET Standard是一个规范,定义了一组可跨.NET实现共享的API,使得开发者可以在不同的.NET平台上编写可移植代码...

    asp.net中GridView控件的各种操作方法,使用大全,附加数据库

    asp.net中GridView控件的各种操作方法,使用大全,附加数据库。包含:GridView导入导出,多层嵌套,表头表尾,分页排序,结合控件,设置属性,增除删改,主键索引...物超所值,亲情放送!~

    ado.net中文手册

    ado.net中文手册ado.net中文手册

    .NET中文分词示例代码

    在.NET开发环境中,中文分词是一项重要的任务,特别是在文本处理、搜索引擎、自然语言处理等领域。本文将详细探讨.NET中文分词示例代码及其使用的盘古分词类库,旨在帮助开发者理解和实现中文分词功能。 首先,让...

    VB.NET的DataTable常用方法总结

    ### VB.NET中的DataTable常用方法详解 #### 一、行操作:追加与删除 ##### 行追加 在处理DataTable时,我们常常需要向表中添加新的数据行。以下是几种常用的行追加方法: 1. **`DataTable.Rows.Add()`** 这是最...

Global site tag (gtag.js) - Google Analytics