从数据表中选择一列

时间:2019-01-21 16:20:15

标签: c# linq

我有一个包含4列的dataTable, 我想选择一个没有foreach或任何其他昂贵循环的列,而我的结果必须是一个只有一个列的新数据表,我该怎么做;

DataTable leaveTypesPerPersonnel = LeaveGroup.GetLeaveTypesPerPersonnels(dtPersonnel.row);

leaveTypesPerPersonnel包含以下列:

[ID,Guid,LeaveTypeID,Code]

我想要过滤不使用foreach的LeaveTypesPerPersonnel并仅使用列[ID]来获取新的数据表

注意:输出必须是具有一列的数据表。

3 个答案:

答案 0 :(得分:1)

 leaveTypesPerPersonnel.Columns.Remove("Guid");
 leaveTypesPerPersonnel.Columns.Remove("LeaveTypeID");
 leaveTypesPerPersonnel.Columns.Remove("Code");

 DataTable dt= new DataView(leaveTypesPerPersonnel).ToTable(false,"ID");

答案 1 :(得分:0)

您应该能够对数据表运行快速的LINQ语句。

var results = (from item in leaveTypesPerPersonnel
               select item.ID);

如果我没记错的话,这将为您提供IEnumerable。它不是DataTable,但也可以为您的问题提供解决方案。

答案 2 :(得分:-1)

这里尝试如何搜索结果并将其转换为DataTable

 var dataTable = leaveTypesPerPersonnel.Rows.Cast<DataRow>().ToList().Where(x=> x["ID"] == 21).CopyToDataTable().DefaultView.ToTable(false, "ID");
  

 var dataTable = leaveTypesPerPersonnel.Select("ID = 21").CopyToDataTable().DefaultView.ToTable(false, "ID");
  

   var dataTable = leaveTypesPerPersonnel.Rows.Cast<DataRow>().ToList().CopyToDataTable().DefaultView.ToTable(false, "ID");