包含.的Linq查询不返回任何记录

本文关键字:返回 任何 记录 查询 Linq 包含 | 更新日期: 2023-09-27 18:17:53

我在页面加载上有一个默认的数据表,进一步当我改变我的页面上的下拉选择时,我想通过使用所选的下拉值循环现有的数据表。

由于我的下拉菜单是多选择下拉菜单,所以很有可能发送多个值来循环数据表。

对于这个场景,我对默认数据表使用了linq查询。这样的:

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

对于下拉列表的单个值,它可以完美地工作。但是当传递多个id时,查询不会返回和行。

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

谁能告诉我,我在我的代码遗漏了什么?

包含.的Linq查询不返回任何记录

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

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>();

使用lambda

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