• C# DataTable查询示例


    代码

    public void Test()
    {
        #region 初始化数据
        /* 数据
        张三 语文 34.00
        张三 数学 58.00
        张三 英语 61.00
        李四 语文 45.00
        李四 数学 87.00
        李四 英语 74.00
        王五 语文 68.50
        王六 数学 83.50
        宋王 数学 75.50
        */
        DataTable resultDt = new DataTable();
        resultDt.Columns.AddRange(new DataColumn[]
        {
            new DataColumn("name", typeof(string)),
            new DataColumn("subject", typeof(string)),
            new DataColumn("score", typeof(double))
        });
        DataRow row1 = resultDt.NewRow(); row1.ItemArray = new object[] { "张三", "语文", 34.00 }; resultDt.Rows.Add(row1);
        DataRow row2 = resultDt.NewRow(); row2.ItemArray = new object[] { "张三", "数学", 58.00 }; resultDt.Rows.Add(row2);
        DataRow row3 = resultDt.NewRow(); row3.ItemArray = new object[] { "张三", "英语", 61.00 }; resultDt.Rows.Add(row3);
        DataRow row4 = resultDt.NewRow(); row4.ItemArray = new object[] { "李四", "语文", 45.00 }; resultDt.Rows.Add(row4);
        DataRow row5 = resultDt.NewRow(); row5.ItemArray = new object[] { "李四", "数学", 87.00 }; resultDt.Rows.Add(row5);
        DataRow row6 = resultDt.NewRow(); row6.ItemArray = new object[] { "李四", "英语", 74.00 }; resultDt.Rows.Add(row6);
        DataRow row7 = resultDt.NewRow(); row7.ItemArray = new object[] { "王五", "语文", 68.50 }; resultDt.Rows.Add(row7);
        DataRow row8 = resultDt.NewRow(); row8.ItemArray = new object[] { "王六", "数学", 83.50 }; resultDt.Rows.Add(row8);
        DataRow row9 = resultDt.NewRow(); row9.ItemArray = new object[] { "宋王", "数学", 75.50 }; resultDt.Rows.Add(row9);
        #endregion
    
        #region 定义中间表,将数据转移,所有值类型都为字符串
        // score分数值类型为double,不能使用like,只能用数字之间的比较方式,如:>、<、>=、<=、=
        // 如果要使用like来查询score,则需要将score转换为字符串,当做字符串来进行查询,所以定义中间表
        DataTable dataTable = new DataTable();
        foreach (DataColumn item in resultDt.Columns)
        {
            DataColumn column = new DataColumn(item.ColumnName, typeof(string));
            dataTable.Columns.Add(column);
        }
        foreach (DataRow item in resultDt.Rows)
        {
            List<string> values = new List<string>();
            foreach (object value in item.ItemArray)
            {
                if (value != null) values.Add(Convert.ToString(value));
                else values.Add("");
            }
            DataRow row = dataTable.NewRow();
            row.ItemArray = values.ToArray();
            dataTable.Rows.Add(row);
        }
        #endregion
    
        string nameEqualSql = "`name` = '张三'";//等于
        string nameNotEqualSql = "`name` <> '张三'";//不等于
        string nameLikeSql = "`name` like '%王%'";//模糊匹配
        string nameBeginWithSql = "`name` like '王%'";//以它开头
        string nameEndWithSql = "`name` like '%六'";//以它结尾
        string scoreBeginWithSql = "`score` like '6%'";//以它开头
    
        //等于 - 张三
        DataTable result1 = dataTable.Select(nameEqualSql).CopyToDataTable();
        // result1:
        //      张三 语文 34.00
        //      张三 数学 58.00
        //      张三 英语 61.00
    
        //不等于 - 张三
        DataTable result2 = dataTable.Select(nameNotEqualSql).CopyToDataTable();
        // result2:
        //      李四 语文 45.00
        //      李四 数学 87.00
        //      李四 英语 74.00
        //      王五 语文 68.50
        //      王六 数学 83.50
        //      宋王 数学 75.50
    
        //模糊匹配 - 王
        DataTable result3 = dataTable.Select(nameLikeSql).CopyToDataTable();
        // result3:
        //      王五 语文 68.50
        //      王六 数学 83.50
        //      宋王 数学 75.50
    
        //以它开头 - 王
        DataTable result4 = dataTable.Select(nameBeginWithSql).CopyToDataTable();
        // result4:
        //      王五 语文 68.50
        //      王六 数学 83.50
    
        //以它结尾 - 六
        DataTable result5 = dataTable.Select(nameEndWithSql).CopyToDataTable();
        // result5:
        //      王六 数学 83.50
    
        //以它开头 - 6
        DataTable result6 = dataTable.Select(scoreBeginWithSql).CopyToDataTable();
        // result6:
        //      张三 英语 61.00
        //      王五 语文 68.50
    
        Console.WriteLine("---End---");
    }
    嘴角上扬,记得微笑
  • 相关阅读:
    RSA
    DES
    MD5
    增删改查
    [转]数据绑定之DataFormatString
    分页通用存储过程(未验证)
    浅谈sql中的in与not in,exists与not exists的区别
    [转]order by 1是什么意思?
    bak骗子公司
    Performance Considerations for Entity Framework 4, 5, and 6
  • 原文地址:https://www.cnblogs.com/jardeng/p/13518034.html
Copyright © 2020-2023  润新知