LINQ引入新领域

时间:2011-11-30 15:49:27

标签: c# 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不为null,则status = date else
  • 如果Name不为null,则status = name else
  • 如果取消不为null,则status = reason else
  • status = cancel取消

我不知道如何使用if语句

引入新字段

1 个答案:

答案 0 :(得分: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,
                 // ..
             }

希望这会有所帮助