这个问题可能已经回答了某处(如果有的话,我希望有链接!)。但是因为我不知道我想要做什么类型的linq查询,所以我一直无法找到任何帮助我的东西。LINQ to SQL:在哪里条件下的子过滤器
我已经有一个非常简单的查询设置来获取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这种类型的子滤波器的(虽然我想象有)。有关如何可以相对干净地完成这些建议的任何建议?
谢谢!