如何用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。有一段时间我一直对此感到头疼。有人能帮我吗?
你似乎非常接近。只需使用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),
};