linq 查询中的动态 where 子句
抱歉我的英语不好。我有一个问题。我想在 LINQ 查询中创建动态 where
子句。我有一个列表对象名称“list1”,其值为 Country
、City
、State
和一个包含名为 Name
列的数据表代码>、<代码>姓氏、<代码>国家/地区、<代码>城市、<代码>州。我想将 list1 值与数据表列进行比较并获取 null/空行。
所以我想要一个像这样的 LINQ 查询:
var query = from p in datatable.AsEnumerable()
where list1 == null
select p
但它返回一个错误。我该如何解决这个问题?
提前致谢。
Sorry for my bad English. I have a problem. I want to create dynamic where
clause in a LINQ query. I have one list object name "list1" having values Country
, City
, State
and one datatable that has column named Name
, Lastname
, Country
, City
, State
. I want to compare list1 values with datatable columns and get null / empty rows.
So I want a LINQ query like this:
var query = from p in datatable.AsEnumerable()
where list1 == null
select p
but it returns an error. How can I solve this problem?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,让我们开始吧——你的查询太糟糕了。
datatable.AsEnumerable
- 强制进行表扫描(遍历整个表)。一般来说,每个查询本身都是一个 IQueryable,因此您可以链接 where 条件。非常好 - 我自己部分使用它,定义核心查询,然后根据需要添加其他 where 子句(通过输入参数)在执行之前。
遗憾的是,通过单个字段匹配将表与元素列表进行比较与从 SQL 级别获得的结果一样糟糕。
Ok, let's get going - your query is ridiculously bad.
datatable.AsEnumerable
- that forces a table scan (running through the whole table).In general, every query is an
IQueryable
itself, so you can chain where conditions.VERY nice - I use that partially myself, defining the core query, then adding additional where clauses as needed (by input parameter) before executing.Sadly, comparing a table against a list of elements by individual field match is as bad as it gets from the sql level.