我的查询是我想选择出生日期是系统日期的用户列表,我在我的控制器中使用了以下条件,但是它给出了错误。 我想省略年份,并选择出生日期与系统日期和月份相同的用户。
错误:
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在模型中定义为:
public IEnumerable<string> UserBirthdays { get; set; }
如何解决此错误并获取用户名?
答案 0 :(得分:2)
这将使所有用户今天获得DOB:
如果DOB属于DateTime
类型:
objUser.UserBirthdays = dbContext.EmployeeProfiles
.Where(u => u.DOB.Day == DateTime.Today.Day
&& u.DOB.Month == DateTime.Today.Month)
.Select(u => u.Name).ToList();
如果DOB
数据类型是Nullable DateTime(DateTime?
),那么您需要先检查空值并将DOB转换为DateTime
:
objUser.UserBirthdays = dbContext.EmployeeProfiles
.Where(u => u.DOB != null
&& Convert.ToDateTime(u.DOB).Day == DateTime.Today.Day
&& Convert.ToDateTime(u.DOB).Month == DateTime.Today.Month)
.Select(u => u.Name).ToList();