【发布时间】:2017-08-28 12:28:58
【问题描述】:
我的查询是我想选择出生日期为系统日期的用户列表,我在控制器中使用了以下条件,但它给出了错误。 我想省略年份,并选择出生日期与系统日期和月份相同的用户。
错误:
LINQ to Entities 无法识别方法 'System.String ToString(System.String)' 方法,并且该方法无法转换为存储表达式。
控制器代码:
objUser.UserBirthdays = dbContext.EmployeeProfiles.Where(u => Convert.ToDateTime(u.DOB).ToString("dd-MMM").Equals(DateTime.Now.ToString("dd-MMM"))).Select(u => u.Name).ToList();
UserBirthdays 在 model 中定义为:
public IEnumerable<string> UserBirthdays { get; set; }
如何解决此错误并获取用户名?
【问题讨论】:
-
var dob = DateTime.Now.ToString("dd-MMM"); objUser.UserBirthdays = dbContext.EmployeeProfiles.Where(u => u.DOB == dob).Select(u => u.Name).ToList();(但这取决于你的数据库中的 DOB) -
DOB在数据库中的格式是什么,为什么是字符串而不是DateTime? (我假设它是string,否则你为什么要使用Convert.ToDateTime()) -
DOB 的数据类型是数据库中的日期时间。
-
那么
Convert.ToDateTime()毫无意义。您是否要匹配DOB的日期和月份与今天的日期和月份匹配的所有记录(但可以是任何年份) -
是的。你明白我的意思。如果用户 A 和 B 的 DOB 是 1990 年 8 月 29 日和 1987 年 8 月 29 日,则它应该给出结果 A 和 B,仅匹配日期和月份部分。