2011-11-30 87 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, 
       // .. 
      } 

希望這有助於