Нужно указать день недели в виде строки (воскресенье, понедельник ...) в предложении Queryable where - PullRequest
0 голосов
/ 19 февраля 2020

Мне нужно проверить, присутствует ли указанное ключевое слово в названии дня в базе данных. Я сделал это с помощью динамического c запроса.

ArrayList paramList = new ArrayList();
int paramCount = 0;
StringBuilder queryString = new StringBuilder();

if (keyword != null)
{
    queryString.Append(" and ClosureDate.Value.DayOfWeek.ToString().ToUpper().Contains(@" + paramCount + ")");
    paramList.Add(this.Keyword.ToUpper());
    paramCount++;
}
var abc= _context.ABC.Where(t => t.RecordStatus == 1).Select(t => t).OrderByDescending(t => t.Created).AsQueryable();
abc= abc.AsQueryable().Where(queryString[0].ToString(), searchArgs.ToArray());

Этот ToString () здесь создает проблему. Я пытался другими способами, но не повезло. Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 19 февраля 2020

Вы можете написать свой SQL Запрос, как показано ниже.

    DECLARE @Dates TABLE
(
  ProductID INT IDENTITY(1,1), 
  Dates DATETIME
)

INSERT INTO @Dates (Dates)
VALUES (GETDATE())
      ,(GETDATE()-1)
      ,(GETDATE()-2)
      ,(GETDATE()-3)
      ,(GETDATE()-4)
      ,(GETDATE()-5)

SELECT Dates 
FROM @Dates

SELECT Dates,DATENAME(WEEKDAY,Dates) AS DayOfWeek
FROM @Dates

Затем в C # / MVC / ASP. Net App используйте что-то вроде .Where (t => t.DayOfWeek.Contains ("Monday")) для фильтрации набора результатов.

...