如何使用Not in datatable.select

Bin*_*ose 6 .net c# asp.net ado.net .net-2.0

我有一个DataTable(Ado.Net),其列为'Status'.此列包含值(在每个记录中)

[ '红', '绿', '蓝', '黄', '白', 'OtherColors']

我想选择状态值不是红色,绿色,蓝色的所有行

使用我提议的标准选择数据的过滤表达式是什么样的.所以我想要在sql查询中使用一些东西(WHERE Status NOT IN('Red','Green','Blue')

注意:这个项目运行.NET 2.0我不能使用linq

Tim*_*ter 16

我测试了它,它按预期工作:

DataRow[] filtered = tblStatus.Select("Status NOT IN ('Red','Green','Blue')");
Run Code Online (Sandbox Code Playgroud)

结果DataRow[]只包含DataRows OtherColors,YellowWhite.

如果你可以使用LINQ,我更喜欢:

string[] excludeStatus = {"Red","Green","Blue"};
var filteredRows = tblStatus.AsEnumerable()
    .Where(row => !excludeStatus.Contains(row.Field<string>("Status")));
Run Code Online (Sandbox Code Playgroud)


Ric*_*Net 5

没有Linq,您可以像这样使用DataView的rowfilter

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();
}
Run Code Online (Sandbox Code Playgroud)