【问题标题】:c# Select Query to fetch datatable recordsc# Select Query 获取数据表记录
【发布时间】:2014-07-11 08:05:33
【问题描述】:

我有如下数据表。

 Name    ID
 X       101
 Y       101101
 Z       101101101
 A       101101101101
 B       101102
 C       103101
 D       103102

我想选择所有 id 以 101 开头的名字。

我如何在 c# 数据表中做到这一点。谁能推荐我...

【问题讨论】:

  • 将 ID 转换为字符串并使用 StartsWith("101")

标签: linq c#-4.0 datatable


【解决方案1】:

使用LINQ 并假设ID 列是string 类型:

DataTable resultsTable = dt.AsEnumerable()
                     .Where(r => r.Field<string>("ID").StartsWith("101"))
                     .CopyToDataTable();

如果ID列是int类型:

DataTable resultsTable = dt.AsEnumerable()
                     .Where(r => r.Field<int>("ID").ToString().StartsWith("101"))
                     .CopyToDataTable();

如果您只需要名称列表(不是数据表):

var results = dt.AsEnumerable()
                .Where(r => r.Field<int>("ID").ToString().StartsWith("101"))
                .Select(r => r.Field<string>("Name"));

【讨论】:

    【解决方案2】:

    要获取所有id以101开头的名字,

    您可以使用 Datarow 过滤数据

            DataTable dt = new DataTable();
    
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("ID", typeof(string)));
    
            dt.Rows.Add("ARUN", "101");
            dt.Rows.Add("Prakash","1011");
            dt.Rows.Add("Sanjay", "00101");
            dt.Rows.Add("Rahul", "00000");
    
            DataRow[] dr = dt.Select("ID like '101*'");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多