2015-11-18 2 views
0

У меня есть оператор linq, который извлекает результаты из моей базы данных. Что я хочу, чтобы попытаться сделать, это показать все, кроме тех строк со статусом кампании архивированногоКак ограничить результаты таблицы оператором 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. Ive был гремя мой голову с этим на некоторое время. Есть ли кто-нибудь, кто мог бы помочь мне?

ответ

2

Вы, кажется, очень близко. Просто используйте пункт where:

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

спасибо чувак. Пожалуйста, дайте мне знать, когда все в порядке, чтобы поцеловать вас. –

+0

Принять ответ (если он помог) будет достаточно, lol. –

1

что-то вроде этого?

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), 
         }; 
+0

Спасибо большое, другой парень тоже просто ответил, что. Не знаю, как я пропустил этот xD –

1

Вам необходимо подать заявление, где положение в том, что:

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), 
       }; 
Смежные вопросы