如何用linq语句限制表的结果,基于它的";状态”;

本文关键字:于它 quot 状态 结果 linq 何用 语句 | 更新日期: 2023-09-27 18:22:20

我有一个linq语句,它从数据库中提取结果。我想尝试和做的是显示除了那些活动状态为存档的行之外的所有内容

MSCDatabaseDataContext MSCDB = new MSCDatabaseDataContext();
            var q = from row in MSCDB.Tbl_Campaigns
                    select new Campaign
                    {   
                        CampaignID = row.CampaignId,
                        CampaignName = row.CampaignName,
                        Target = Convert.ToInt32(row.Target),
                        Discount = Convert.ToInt32(row.Discount),
                        CampaignStartDatesS = Convert.ToDateTime(row.StartDate).Date + " - " + Convert.ToDateTime(row.EndDate).Date,
                        //CampaignSDate = Convert.ToDateTime(row.StartDate),
                        //CampaignEDate = Convert.ToDateTime(row.EndDate),
                        CurrentStatus = row.EndDate >= DateTime.Now && row.StartDate <= DateTime.Now ? "Active": row.StartDate >=  DateTime.Now ? "Pending": row.CampaignStatus == 4 ? "Archived": "Closed",
                        Uptake = Convert.ToInt32(row.Uptake),
                    };

我确定活动是否存档的方式是基于其活动状态,即4。有一段时间我一直对此感到头疼。有人能帮我吗?

如何用linq语句限制表的结果,基于它的";状态”;

你似乎非常接近。只需使用where子句:

var q = from row in MSCDB.Tbl_Campaigns
        where row.CampaignStatus != 4
        select new Campaign
        {
            ...
        };

这样的东西?

 MSCDatabaseDataContext MSCDB = new MSCDatabaseDataContext();
                var q = from row in MSCDB.Tbl_Campaigns
                        where row.status != 'Archived'
                        select new Campaign
                        {   
                            CampaignID = row.CampaignId,
                            CampaignName = row.CampaignName,
                            Target = Convert.ToInt32(row.Target),
                            Discount = Convert.ToInt32(row.Discount),
                            CampaignStartDatesS = Convert.ToDateTime(row.StartDate).Date + " - " + Convert.ToDateTime(row.EndDate).Date,
                            //CampaignSDate = Convert.ToDateTime(row.StartDate),
                            //CampaignEDate = Convert.ToDateTime(row.EndDate),
                            CurrentStatus = row.EndDate >= DateTime.Now && row.StartDate <= DateTime.Now ? "Active": row.StartDate >=  DateTime.Now ? "Pending": row.CampaignStatus == 4 ? "Archived": "Closed",
                            Uptake = Convert.ToInt32(row.Uptake),
                        };

您需要对其应用where子句:

MSCDatabaseDataContext MSCDB = new MSCDatabaseDataContext();
        var q = from row in MSCDB.Tbl_Campaigns
                where row.CampaignStatus != 4
                select new Campaign
                {   
                    CampaignID = row.CampaignId,
                    CampaignName = row.CampaignName,
                    Target = Convert.ToInt32(row.Target),
                    Discount = Convert.ToInt32(row.Discount),
                    CampaignStartDatesS = Convert.ToDateTime(row.StartDate).Date + " - " + Convert.ToDateTime(row.EndDate).Date,
                    //CampaignSDate = Convert.ToDateTime(row.StartDate),
                    //CampaignEDate = Convert.ToDateTime(row.EndDate),
                    CurrentStatus = row.EndDate >= DateTime.Now && row.StartDate <= DateTime.Now ? "Active": row.StartDate >=  DateTime.Now ? "Pending": row.CampaignStatus == 4 ? "Archived": "Closed",
                    Uptake = Convert.ToInt32(row.Uptake),
                };
相关文章: