数据库
首页 > 数据库> > C#,Linq2SQL:构建表达式

C#,Linq2SQL:构建表达式

作者:互联网

你怎么做呢?

我坐在这里,努力使自己和他人的事情变得简单.但是我似乎无法决定哪种方法是最好的.问题是这样的:

首先从数据上下文中收集一些东西,然后开始根据一大堆不同的标准进行过滤.如果是这样,那么那些或也许那些,除非不是那个而是那个,在那个和那些之间,越过山坡,除非没有什么倒退,向上和超越.

好的,也许没有那么复杂…但是我基本上需要建立像这样的树:

        start
          |
          x
          |
          x
         / \
        x   x
        |   |
        x   x
         \ /
          x
         / \
        x   x
        |   |
        x   |
        |   |
        x   x
         \ /
          x
          |
        result

哪里代表And,分支代表Or.由于Or路径的替代,我无法使用data.Where(…).Where(…).Where(…)而且使用Union和Concat之类的东西的值为tendency to crash(实际上还没有设法以一种有效的方式使用它).换句话说,我必须建立表达式< Func< T,bool>.实例.

我创建了扩展方法,以将这些方法与AndAlso和OrElse一起添加(使用Marc中的lots of help.我已经开始创建谓词构建器类,以使事情更简单.计划是创建And-stuff链,然后创建Or他们在一起…有点…:p

无论如何,我无法确定这些想法是否正确.我认为我现在开始的道路,可能在我编写这些链时可以为我提供一个好的“工作环境”.但是我很好奇知道其他人如何解决这些问题.我认为这可能很普遍,至少在必须以各种奇怪的方式过滤和处理数据然后将其显示给用户的应用程序中.

解决方法:

有人发誓Predicate Builder.就个人而言,我一直发现手动处理表达式就足够了-但也许我很奇怪(此外,我使用Expression API已有一段时间了).但是,只要您有合适的单元测试,我就看不到这种方法有任何问题.当前最大的困扰是EF对Expression.Invoke的有限支持-放心,这将是我在4.0进入“测试版”时首先检查的内容之一.

标签:linq-to-sql,c
来源: https://codeday.me/bug/20191210/2103351.html