gpt4 book ai didi

linq - Linq 中的多个 WHERE 子句

转载 作者:行者123 更新时间:2023-12-03 05:23:27 25 4
gpt4 key购买 nike

我是 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”子句以一个更多限制性过滤器结束 - 我认为您需要一个更少限制性过滤器。我想你真的想要:

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 用户名不是 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调用需要很长时间,但如果集合足够小,则不会产生太大的几率。

关于linq - Linq 中的多个 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/679644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com