2011-11-30 57 views
0

我有以下LINQ引入新的领域

var mylist= (from inlst in db.Progs 
       where inlst.ProgID == PGID 
       select new 
       { 
        Date = inlst.Date1, 
        Name = inlst.Reps1, 
        Cancel = inlst.Cancel, 
        Reason = inlst.Reason, 
        Status = ... 
       }).ToList(); 

我想在表中没有引入新的领域被称为status ,上面写着:

  • 如果日期不为空则状态= date else
  • 如果Name不为空,那么status = name else
  • 如果Cancel不为null,那么status = reason else
  • 状态=取消

我不知道如何与if语句

+0

请格式化您的问题,并没有真正理解这个问题。 – pramodtech

回答

1

使用条件运算符的缩写形式:

Status = inlst.Date1 != null ? "Date" : inlst.Cancel != null ? "Cancel" : ... : string.Empty; 
4

为此,您可以用一个简单的,虽然引进的新领域Status = inlst.Date != null...

但是我会让它更像Typed这样。

创建一个类

public class Prog 
{ 
    public DateTime Date { get; set; } 
    public string Name { get; set; } 
    // .. 

    public ProgStatus Status 
    { 
     get 
     { 
      if (Date != null) 
       return ProgStatus.Date; 
      if (Name != null) 
       return ProgStatus.Name; 
      // .. 
     } 
    } 
} 

创建您可能状态的枚举值

public enum ProgStatus { 
    Name, Date // ... 
} 

然后选择它像这样

var mylist = (from inlst in db.Progs 
      where inlst.ProgID == PGID 
      select new Prog 
      { 
       Date = inlst.Date1, 
       Name = inlst.Reps1, 
       // .. 
      } 

希望这有助于