最后,成员年龄不工作

本文关键字:工作 成员 最后 | 更新日期: 2023-09-27 18:08:36

我试图检查在一定范围内的人-让minage和maxage对应例如年龄组与minage=18和maxage =24意味着我试图过滤掉年龄在18至24岁之间的人。成员的数据类型为string ..

i am try this

 int agefrom = Convert.ToInt32(cbGEFrom.Text);
 int ageto = Convert.ToInt32(cbGETo.Text);
 DateTime today = DateTime.Today;
 DateTime max = today.AddYears(-(agefrom + 1));
 DateTime min = today.AddYears(-(ageto));
 string maxage = Convert.ToString(max);
 string minage = Convert.ToString(min);

var members = 
          from report in eclipse.members 
          where string.Compare(report.member_Dob,minage) >=0
          where string.Compare(report.member_Dob,maxage) < 0
        select report;

我已经试过了

 var members = from report in eclipse.members
      let dob =  DateTime.Parse(report.member_Dob) // or use ParseExact 
      where  dob >= minDOB && dob < maxDOB 
      select report;

但是linq to entities不支持这行

let dob =  DateTime.Parse(report.member_Dob) // or use ParseExact 

不幸的是,member_dob的数据类型是字符串,我不能改变模式…

最后,成员年龄不工作

看看这篇文章Linq到实体的日期时间转换

我想它有你要找的答案。

如果你不介意由这个表达式生成的sql,并且你所有的字符串值都是有效的DateTime,你可以这样做:

var members = from report in eclipse.members
              let dob = eclipse.members.Take(1).Select(x => report.member_Dob).Cast<DateTime>().FirstOrDefault()
              where  dob >= minDOB && dob < maxDOB 
              select report;