C# 在Linq中放置If和Else

C# 在Linq中放置If和Else,c#,linq,if-statement,C#,Linq,If Statement,可能重复: 我试图使用Linq运行查询,但在where子句之前,我想指定If条件,但我没有得到正确的语法(可能是),或者这是不可能的? 我搜索了很多,但他们在查询之前使用if和else,但我想在查询中使用if。 有没有可能像: var q = (from mortgageapplication in context.MortgageApplications if(mortgageapplication.purpose of loan==7) {

可能重复:

我试图使用Linq运行查询,但在where子句之前,我想指定If条件,但我没有得到正确的语法(可能是),或者这是不可能的? 我搜索了很多,但他们在查询之前使用if和else,但我想在查询中使用if。 有没有可能像:

var q = (from mortgageapplication in context.MortgageApplications
         if(mortgageapplication.purpose of loan==7)
         {
              where mortgageapplication.MortgageActive == true && mortgageapplication.MortgageCoordinator==ID
         }

我只是在尝试,但请告诉我是否可以将if置于where之前?

此查询在逻辑上是等效的:

var loanPurpose = 7;
var coordinatorId = ...;
var query =
    from app in context.MortgageApplications
    where app.PurposeOfLoan != loanPurpose
        || (app.MortgageActive && app.MortgageCoordinator == coordinatorId)
    select application;

逻辑如下,您只想检查它是否处于活动状态,是否由给定的协调器执行。否则就可以申请。

问得好,但从一些想法来看:Linq语句的
部分的目的就是评估集合项目的条件。只要把它放在那里:
where mortgageapplication.purposeofloan==7&&mortgageapplication.MortgageActive==true&&mortgageapplication.MortgageCoordinator==ID
这是我在条件满足时给出的不完整演示,然后在其中比较不同的日期。Loanpurpose可能有不同的值,就像在同一时间一样“2”或其他“7”,因此在where条件下,我可以根据贷款用途值比较不同字段。