【发布时间】:2009-03-26 14:31:49
【问题描述】:
你是怎么做到的?
我坐在这里,努力让自己和他人的事情变得更简单。但我似乎无法决定哪种方式是最好的。问题是这样的:
从数据上下文中的一些东西的集合开始,然后开始过滤掉一大堆不同的标准。如果是这样,那么那些或者也许是那些,除非那不是这个而是那个,在那些之间和山上,除非什么都没有,然后向后,向上和超越。
好吧,也许没那么复杂……但我基本上需要建立这样的树:
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(实际上还没有设法以一种有效的方式使用它)。换句话说,我必须建立Expression<Func<T, bool>> 实例。
我已经创建了扩展方法,将它们与AndAlso 和OrElse 相加(使用lots of help 来自Marc。我已经开始创建一个谓词构建器类以使事情变得更简单一些。计划是创建And-stuff 的链,然后将Or 它们放在一起......有点......:p
无论如何,我只是无法确定这些想法是否好。我认为我现在开始的道路可能会在我编写这些链时为我提供一个不错的“工作环境”。但我很想知道其他人是如何解决这些问题的。我认为这可能很常见,至少在必须以各种奇怪的方式过滤和处理数据然后将它们显示给用户的应用程序中。
【问题讨论】:
标签: c# linq-to-sql