如果是lambda表达式中的语句和赋值

Sha*_*ean 0 c# linq lambda entity-framework

我有一个lambda语句,其中包含如下映射:

public enum Status
{
    Completed,
    InComplete,
    Ok
}
Run Code Online (Sandbox Code Playgroud)

查询:

var courses = query.Select(c => new SomeModel
      {
          Status = c.someQuery() ? Status.Completed : Status.Ok
      });
Run Code Online (Sandbox Code Playgroud)

所以我希望Status具有多个if语句而不仅仅是三元操作.例如.

var courses = query.Select(c => new SomeModel
      {
          Status = if(c.someQuery())
                   { 
                       return Status.Completed;
                   }
                   else if(c.someOtherQuery())
                   {
                       return Status.InComplete;
                   }
                   else if(c.someOtherQuery1())
                   {
                       return Status.Ok;
                   }
      });
Run Code Online (Sandbox Code Playgroud)

那我怎么做到这样的事情呢?我正在使用Entity框架ORM.

gil*_*ly3 5

您可以嵌套您的三元操作:

Status = c.someQuery() ? Status.Completed : 
    c.someOtherQuery() ? Status.InComplete : Status.Ok 
Run Code Online (Sandbox Code Playgroud)

  • @Jason,这没什么不对."代码味道"一词让我感到有毒,我认为这是一种懒惰的说法,"我不知道这段代码有什么问题,但我会假设它有问题,因为我的直觉是这么说的. " (2认同)
  • 用括号清楚说明哪一个先行,我认为这不是代码味道太多. (2认同)