最后,成员年龄不工作
本文关键字:工作 成员 最后 | 更新日期: 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;