linq 查询中的动态 where 子句

发布于 2024-12-10 11:00:23 字数 501 浏览 0 评论 0原文

抱歉我的英语不好。我有一个问题。我想在 LINQ 查询中创建动态 where 子句。我有一个列表对象名称“list1”,其值为 CountryCityState 和一个包含名为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生戏 2024-12-17 11:00:23

好吧,让我们开始吧——你的查询太糟糕了。

  • 您不应该使用 datatable.AsEnumerable - 强制进行表扫描(遍历整个表)。
  • 其次,您必须对所有字段进行明确的编码。这会变得很糟糕 - 根据定义取决于列表的大小,这将是非常糟糕的。

一般来说,每个查询本身都是一个 IQueryable,因此您可以链接 where 条件。非常好 - 我自己部分使用它,定义核心查询,然后根据需要添加其他 where 子句(通过输入参数)在执行之前。

遗憾的是,通过单个字段匹配将表与元素列表进行比较与从 SQL 级别获得的结果一样糟糕。

Ok, let's get going - your query is ridiculously bad.

  • You should not have datatable.AsEnumerable - that forces a table scan (running through the whole table).
  • Second, you have to code all fields expressively. This is going to get nasty - per definition Depending on size of list this will be very bad.

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文