Отображение сведений об участнике в зависимости от его возраста с использованием LINQ и Entity Framework - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь проверить людей в определенном возрасте. У меня есть два ComboBox, minagecombobox и maxagecombobox, со значениями от 1 до 120.

Я хочу получить людей, чей возраст находится между этими двумя значениями (предположим, например, что я хочу отфильтровать людей в возрасте от 18 до 24 лет).

Это структура таблицы Member:

member_id
member_firstname
member_dob(datatype is string)

И мое имя сущности dbcontext. Я использую Entity Framework и LINQ to Entities.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Просто рассчитайте возраст и сравните его с желаемым возрастным интервалом. Расчет возраста не совсем лучший, но он достаточно хорош в качестве примера:

DateTime now = DateTime.Now;
int min = 18, max = 20;

var res = 
    from m in Member
    let Age = System.Data.Objects.SqlClient.SqlFunctions.DateDiff("y", t.member_dob, now)
    where Age >= min && Age <= max
    select m;
0 голосов
/ 16 сентября 2011
DoBConverted = (Today's date - age(in years)) // in datetime

даст вам дату рождения.

Одновременно, анализируйте DoB (строку), чтобы получить datetime.

Вы можете выполнить проверку со значением dob с min dob и max dob, чтобы получить записи.

int minAge = 18, maxAge=20;
DateTime convertedMinDob = DateTime.Now.AddYears(-minAge);
DateTime convertedMaxDob = DateTime.Now.AddYears(-maxAge);
Console.WriteLine(convertedMinDob.ToString() + " " + convertedMaxDob.ToString());

string strDate = "1/1/1995";
DateTime actualDate = DateTime.Parse(strDate);

bool valid = actualDate >= convertedMaxDob && actualDate <= convertedMinDob;

Console.WriteLine(valid? "In range": "Out of range");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...