【问题标题】:Get multiple column from DataTable从 DataTable 中获取多列
【发布时间】:2019-01-07 05:29:39
【问题描述】:

我想像这样从 DataTable 中获取两列

 //method to get data as DataTable from db
var dtTasks = db.GetTableBySQL($"exec Task @para = {Para}");

 var currentPendingTasks = (from DataRow dr in dtTasks.Rows select dr["TaskId"], dr["Name"]).ToString();

但由于某种原因,在我的第二列中我得到了

当前上下文中不存在名称“dr”

不能为每个 DataRow 选择多个列吗?

【问题讨论】:

    标签: c# sql datatable


    【解决方案1】:

    你可以用这个语法创建一个匿名集合

    var currentPendingTasks = (from DataRow dr in dt.Rows
                                select new 
                                { 
                                    TaskId = dr["TaskId"], 
                                    Name = dr["Name"]
                                });
    

    但可能更简单的方法是创建一个仅包含原始表中的一些列的新 DataTable,如下所示

    var currentPendingTasks = dt.DefaultView.ToTable(false, "TaskId", "Name");
    

    MSDN DataView.ToTable method

    【讨论】:

      【解决方案2】:

      你可以实现那个 yins 列表:

       var data= dtTasks.AsEnumerable().Select(x => new
       {
         TaskId = (int)x["TaskId"],
         TaskName= (string)x["Name"]
       }).ToList();
      

      然后:

      var TaskId= data[0]. TaskId        
      

      【讨论】:

      • 我不想把它们放在一个字符串中,我想用那两列为每一行获取一个对象。
      • 与此等价的东西:var parameters = assignNotificationTableType.Select(x => new { x.TaskId, x.Name }).ToList(); 但 DataTable 没有列表
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 2021-12-26
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      相关资源
      最近更新 更多