C#常用操作操作方式

本文章转载:http://www.cnblogs.com/Gyoung/archive/2012/05/08/2489585.html

 

.NET中有些措施以前并未碰过,但据此过了下吃人眼前同一亮,哇,原来你如此好用。

脚就说说于自己忽略了的点子。当然,每个人之编程经历,涉猎面及对.NET的体会水平还不同等。所以,这单是一家之言,肯定起过多不足之处,欢迎大家批评指正。

1.
ADO.NET类

DataTable.Merge()

怎样统一两摆放表?自己先写的计:

图片 1)

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);
            }
        }

图片 2)

嘿,这个主意十分笨好天真吧,其实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执行存储过程的当儿怎么增加参数,类似这样做就是足以了:

图片 3)

                //设置参数名和类型
                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";

图片 4)

方还分开了少步,增加参数,然后又叫参数赋值,其实我们可以一步到位的:

                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中摸索特定值?以前自己还是这样做:

图片 5)

          foreach (int i in list)
            {
                if (i == 3)
                {
                    Console.Write(i);
                }
            }

图片 6)

实在全可以不用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);

相关文章