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

时间:2016-11-15 09:05:18

标签: c# asp.net linq asp.net-mvc-4 datatable

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

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

对于这个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>();

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

注意:BUIds是一个字符串变量。(例如:&#34; 1,2&#34;)

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

2 个答案:

答案 0 :(得分: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>();

答案 1 :(得分:0)

使用lambda

var zones = ds.Tables[1].AsEnumerable().Where(row => BUIds.Split(',').Contains((string) row["BusinessUnitId"]);