我将日期值保存在我的数据库中,如
id dob
1 20/5/1988
2 3/6/1999
3 4/7/1890
这是我的查询
object _x = db.DB_MyDatabase.my_tables
.Where(x => x.dob.Split('/')[2].Trim() == "1988")
.ToList();
我希望获得year=1988
的第一行。
但是我收到了这个错误
Unrecognized expression node: ArrayIndex
我该如何解决?
答案 0 :(得分:2)
在Where子句之前使用AsEnumerable()来强制在客户端进行拆分。你正在尝试做的当前工作在sql server端没有对应关系,也无法正确翻译。
答案 1 :(得分:1)
尝试在AsEnumerable()
之前使用Where(...)
:
object _x = db.DB_MyDatabase.my_tables
.AsEnumerable()
.Where(x => x.dob.Split('/')[2].Trim() == "1988")
.ToList();
答案 2 :(得分:1)
您可以使用Substring
,如下所示:
object _x = db.DB_MyDatabase.my_tables
.Where(x => x.dob.Trim().Substring(x.dob.Length - 4, 4) == "1988")
.ToList();
查询类似于sql:
WHERE
SUBSTRING(LTRIM(RTRIM(dob)), ((CONVERT(Int,LEN(dob))) - 4) + 1, 4) = '1988'
答案 3 :(得分:0)
object _x = db.DB_MyDatabase.my_tables.Where(x => x.dob.Contains("1988")).ToList();