【发布时间】:2011-12-05 18:41:36
【问题描述】:
这个问题可能已经在某个地方得到了回答(如果是这样,我很想拥有链接!)。但是由于我不知道我正在尝试执行哪种类型的 linq 查询,所以我找不到任何可以帮助我的东西。
我已经有一个非常简单的查询设置来获取 DomainSequences 类型的所有记录。
var query = db.DomainSequences;
有不同类型的域序列。我想得到所有这些。但是,对于 DomainType 属性等于“AT”的记录,那么我只想返回一些“AT”记录(即,对这些记录执行 where 子句以过滤“AT”记录但仍想返回所有非“AT”记录。
更简单地说,我想获取所有 DomainSequence 记录,但是对于具有 DomainType == "AT" 的记录,只有在满足某些条件时才返回它们。
我可以通过以下方式想到一种方法:
query.Where(x => x.DomainType != "AT" || (x.DomainType == "AT" && AT conditions....));
我认为这应该可行,但是当我必须在其他列上执行子过滤器时问题就来了,然后它很快就开始变得更加混乱和复杂。
理想情况下,我想做类似的事情
query.Where(x => x.DomainType == "AT" || x.DomainType == "KS")
.WhereIf(y => y.DomainType == "AT" then apply filter on those)
.WhereIf(z => z.DomainType == "KS" then apply filter to these);
我不确定是否有办法在 LINQ 或 SQL 中执行这种类型的子过滤器(尽管我想有)。关于如何相对干净地完成此操作的任何建议?
谢谢!
【问题讨论】: