我正在尝试检查某个年龄段的人。我有两个ComboBox,minagecombobox和maxagecombobox,值介于1和120之间。
我希望得到年龄介于这两个值之间的人(例如,我想过滤掉年龄在18到24岁之间的人)。
这是成员表结构:
member_id
member_firstname
member_dob(datatype is string)
我的实体名称是dbcontext。我正在使用Entity Framework和LINQ to Entities。
答案 0 :(得分:0)
DoBConverted = (Today's date - age(in years)) // in datetime
会告诉你出生日期。
Simiarly,解析DoB(字符串)以获取日期时间。
您可以使用min dob和max dob执行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");
答案 1 :(得分:0)
只需计算年龄并将其与您想要的年龄间隔进行比较。年龄计算并不是最好的,但它足以作为一个例子:
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;