LINQ引入新领域

发布于 2024-12-19 02:42:08 字数 680 浏览 0 评论 0原文

我有以下内容,

    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 也就是说:

  • if Date is not null then status = date else
  • if Name is not null then status = name else
  • if Cancel not null then status = Reason else
  • status = cancel

我不知道如何使用 if 语句引入新字段

I have the following

    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();

I would like to introduce a new field not in the table called status
that says:

  • if Date is not null then status = date else
  • if Name is not null then status = name else
  • if Cancel not null then status = reason else
  • status = cancel

I am not sure how to introduce a new field though with if statement

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美人迟暮 2024-12-26 02:42:08

您可以使用简单的 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,
                 // ..
             }

希望这有帮助

You can do this with a simple Status = inlst.Date != null...

But i would make it a little more Typed like this.

create a class

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;
            // ..
        }
    }
}

create a enum of your possible status values

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

then select it like this

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

hope this helps

櫻之舞 2024-12-26 02:42:08

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

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

Use short form of conditional operator :

Status = inlst.Date1 != null ? "Date" : inlst.Cancel != null ? "Cancel" : ... : string.Empty;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文