Как сопоставить указанную строку c внутри строки, извлеченной из базы данных в MVC 5? - PullRequest
0 голосов
/ 21 февраля 2020

Итак, я строю проект, в котором мне нужно получить дату из базы данных и на основе данного месяца, так как мне нужно найти клиентов, у которых день рождения в этом месяце. У меня есть запрос, который отлично работает на сервере SQL, но я не получаю его эквивалент в Linq.

Так вот мой запрос, который выполняется в SQL

SELECT * FROM CustReg 
WHERE DOB LIKE '_____month%'

Мне нужно сопоставить этот месяц, так как он должен занимать 6-ю позицию этой строки DOB.

Demo Database-
Id    Name    DOB
1     AB      1995-02-20
2     CD      1998-04-13
4     EF      1991-02-15
5     GH      1988-06-8
6     IJ      2000-02-09

Запрос - Выбрать всех сотрудников, чей день рождения наступает в Фев. Ожидаемый результат - AB, EF, IJ.

PS. Я выбрал тип данных DOB string, а не Date или DateTime. У меня также есть месяц в строке (например, «02» для февраля), который я извлек из даты ввода.

1 Ответ

1 голос
/ 21 февраля 2020

Если я правильно понял ваш вопрос, может помочь следующий код:

Сначала создайте перечисление месяцев,

public enum Month
{
   Jan=1,Feb,Mar,Apr,May,Jun,July,Aug,Sep,Oct,Nov,Dec
}

Теперь используйте следующий запрос, чтобы получить то, что вы хотели ,

Month requiredMonth = Month.Feb;
var res = CustReg.Where(x => (Month)Enum.Parse(typeof(Month), x.DOB.Substring(5, 2)) == requiredMonth).Select(x => x.Name);
foreach (var item in res)
{
   Console.WriteLine(item);
}
...