我有一个包含4列的dataTable, 我想选择一个没有foreach或任何其他昂贵循环的列,而我的结果必须是一个只有一个列的新数据表,我该怎么做;
DataTable leaveTypesPerPersonnel = LeaveGroup.GetLeaveTypesPerPersonnels(dtPersonnel.row);
leaveTypesPerPersonnel包含以下列:
[ID,Guid,LeaveTypeID,Code]
我想要过滤不使用foreach的LeaveTypesPerPersonnel并仅使用列[ID]
来获取新的数据表
注意:输出必须是具有一列的数据表。
答案 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");