使用LINQ和Entity Framework显示基于其年龄的成员详细信息

时间:2011-09-16 09:36:32

标签: c# linq entity-framework linq-to-entities

我正在尝试检查某个年龄段的人。我有两个ComboBox,minagecombobox和maxagecombobox,值介于1和120之间。

我希望得到年龄介于这两个值之间的人(例如,我想过滤掉年龄在18到24岁之间的人)。

这是成员表结构:

member_id
member_firstname
member_dob(datatype is string)

我的实体名称是dbcontext。我正在使用Entity Framework和LINQ to Entities。

2 个答案:

答案 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;