如何使用Not In datatable.select
本文关键字:datatable select In Not 何使用 | 更新日期: 2023-09-27 18:26:36
我有一个列为"Status"的DataTable(Ado.Net)。此列保存值(在每个记录中)
[‘红色’、‘绿色’、‘蓝色’、‘黄色’、‘白色’、‘其他颜色’]
我想选择状态值不是红色、绿色、蓝色的所有行
根据我提出的标准,使用哪种筛选表达式来选择数据。所以我想实现一些类似于我们在sql查询中使用的东西(WHEREStatus NOT in(‘Red’,‘Green’,‘Blue’)
注意:这个项目正在运行.NET 2.0,我不能使用linq
我已经测试过了,它按要求工作:
DataRow[] filtered = tblStatus.Select("Status NOT IN ('Red','Green','Blue')");
生成的DataRow[]
仅包含具有OtherColors
、Yellow
和White
的DataRow。
如果你可以使用LINQ,我更喜欢:
string[] excludeStatus = {"Red","Green","Blue"};
var filteredRows = tblStatus.AsEnumerable()
.Where(row => !excludeStatus.Contains(row.Field<string>("Status")));
如果没有Linq,您可以使用类似的DataView的行过滤器
public DataTable GetFilteredData(DataTable table, string[] filterValues)
{
var dv = new DataView(table);
var filter = string.join("','", filterValues);
dv.RowFilter = "Status NOT IN ('" + filter + "')";
return dv.ToTable();
}
假设你的数据表是一个类型化数据集的一部分,你可以使用Linq来处理数据集,从中你可以得到这样的东西:
var records =
from record in datatable
where !record.Status.Contains('Red','Green','Blue')
select record;
即使你没有一个类型化的数据集,Linq到数据集就是你的答案。你需要一些铸造,但不难。