拆分值并在linq中搜索到sql

时间:2016-10-17 13:24:33

标签: c# asp.net linq-to-sql

我将日期值保存在我的数据库中,如

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

我该如何解决?

4 个答案:

答案 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();