我是 LINQ 新手,想知道如何执行多个 where 子句。这就是我想要实现的:通过过滤掉某些用户名来返回记录。我尝试了下面的代码,但没有按预期工作。
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX"))
select r;
DataTable newDT = query.CopyToDataTable();
我在这里先向您的帮助表示感谢!!!
好吧,你可以直接放入多个“where”子句,但我认为你不想这样做。多个“where”子句以more限制性过滤器 - 我想你想要一个less限制性的一。我想你真的想要:
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where r.Field<string>("UserName") != "XXXX" &&
r.Field<string>("UserName") != "YYYY"
select r;
DataTable newDT = query.CopyToDataTable();
请注意 && 而不是 ||。如果用户名不是 XXXX,则要选择该行and用户名不是 YYYY。
编辑:如果您有完整的收藏,那就更容易了。假设集合被称为ignoredUserNames
:
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where !ignoredUserNames.Contains(r.Field<string>("UserName"))
select r;
DataTable newDT = query.CopyToDataTable();
理想情况下,你想让它成为HashSet<string>
以避免Contains
调用需要很长时间,但如果集合足够小,则不会有太大的几率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)