gpt4 book ai didi

c# - 寻找构建 Linq 动态/条件表达式的简单方法

转载 作者:行者123 更新时间:2023-11-30 13:47:05 25 4
gpt4 key购买 nike

给定表格:

表1

  • 编号
  • 字符串字段1
  • 字符串字段2
  • 字符串字段3
  • 字符串字段4

表2

  • 编号
  • 表1_id
  • 字符串字段1
  • 日期域 1

给定一个UI 允许用户对:

  • dropdwonlist1 具有任何table1.stringfield1
  • dropdwonlist2 具有任何table1.stringfield2
  • dropdwonlist3 具有任何table1.stringfield3
  • dropdwonlist4 具有任何table1.stringfield4
  • dropdwonlist5 具有任何table2.stringfield1
  • dropdwonlist6 with [any, the, before, after, between]
  • calendar1 与 table2.datefield1 链接
  • calendar2 与 table2.datefield1 链接

结果是带有每个字段的 datagridview。

我想构建条件查询,如果不是“任何”,请添加此条件

考虑到这一点,简单的 LINQ 查询不适用:

Table2
.Where(x => x.stringfield1 == dropdwonlist1.SelectedValue)
.Where(x => x.stringfield2 == dropdwonlist2.SelectedValue)
.Where(x => x.stringfield3 == dropdwonlist3.SelectedValue)
(...)

Expression trees在文档中,但这看起来太多了。

有没有最简单的方法来构建我的动态查询?

最佳答案

表达式树看起来比它们更可怕,但你是对的,在你的情况下它们是不必要的:你可以使用足够聪明的静态条件来忽略没有选择的下拉列表。你可以这样做:

Table2
.Where(x => dropdwonlist1.SelectedValue == null || x.stringfield1 == dropdwonlist1.SelectedValue)
.Where(x => dropdwonlist2.SelectedValue == null || x.stringfield2 == dropdwonlist2.SelectedValue)
.Where(x => dropdwonlist3.SelectedValue == null || x.stringfield3 == dropdwonlist3.SelectedValue)

关于c# - 寻找构建 Linq 动态/条件表达式的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728073/

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