Linq查询.Contains不返回任何记录

She*_*gvr 0 c# linq asp.net datatable asp.net-mvc-4

我在页面加载时有一个默认的数据表,当我更改页面上的下拉选项时,我想使用所选的下拉值循环遍历现有的数据表.

由于我的下拉是多选下拉,因此很有可能发送多个值来循环数据表.

对于这个scenariao,我在默认数据表上使用了linq qyery.像这样:

var zones = from myRow in ds.Tables[1].AsEnumerable()
            where myRow.Field<string>("BusinessUnitId").Contains(BUIds)
            select myRow;
dt = zones.CopyToDataTable<DataRow>();
Run Code Online (Sandbox Code Playgroud)

它适用于下拉列表的单个值.但是,当传递多个ID时,查询不会返回行和行.

注意:BUIds是一个字符串变量.(例如:"1,2")

有人可以告诉我我的代码中缺少什么吗?

Cet*_*soz 5

你在错误的地方使用Contains,它应该在BUIds上:

var ids = BUIds.Split(','); // get an Id array
var zones = from myRow in ds.Tables[1].AsEnumerable()
            where ids.Contains( myRow.Field<string>("BusinessUnitId") )
            select myRow;
dt = zones.CopyToDataTable<DataRow>();
Run Code Online (Sandbox Code Playgroud)