首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq Linq函数

Linq Linq函数
EN

Stack Overflow用户
提问于 2013-01-16 18:05:46
回答 2查看 691关注 0票数 0

我会链接将Datetime列转换为字符串。这应该发生在数据库示例中,如果我们使用System.Data.Objects.SqlClient.SqlFunctions,它将被附加到查询并在数据库中执行。

在所有建议的帖子中,首先需要查询,然后我们需要选择。在select中,我们可以使用.ToString()。我希望在获取时转换,而不是先获取记录。

我的要求。我有个enity员工。

代码语言:javascript
复制
public class EmpEntities
{
 public string Id { get; set; }
 public DateTime CreatedDate { get; set; }
}

假设我的数据Emp-19,2012-01-01 11:33:454 Emp-17,1999:06:06 12:44:898

我的搜索标准是20,在所有字段中,任何员工都有20 (包含)这我需要过滤的属性列表包含需要检查。为此,我需要在linq中将创建的日期列转换为字符串。

代码语言:javascript
复制
var query=
(from ee in entities.Employee
 where ee.CreatedDate.Value.ToString().Contains("20")
select ee).ToList();

如果我们使用上面的一个,它将通过错误。

如果我们使用下面的方法,它会工作得很好。

代码语言:javascript
复制
var query=
     (from emp in entities.Employee                        
       select emp)
.AsEnumerable()
.Where(x=>x.CreatedDate.Value.ToString().Contains("20"));

我需要检查实体的日期时间属性是否包含。有没有办法将datetime属性转换为字符串并检查linq中的内容。

我需要将我的datetime属性转换为字符串,然后我需要使用contains。

因此,这里我的问题是,我想在数据库级别过滤数据,例如,我正在准备员工id

代码语言:javascript
复制
var query= (from emp in entities.Employee.Where(x =>   System.Data.Objects.SqlClient.SqlFunctions.StringConvert((decimal?)x.Empid).Contains("20"))                   
                select emp).ToList();

sql查询中的等价物是。

代码语言:javascript
复制
SELECT  1 AS [C1],  [Extent1].[name] AS [name] FROM [dbo].[Employee] AS [Extent1]
WHERE STR( CAST( [Extent1].[EmpId] AS decimal(19,0))) LIKE N'%5%'

在sql执行中,它将整数类型转换为字符串,并在获取记录时执行条件。

类似地,我想过滤创建日期和empid。但是我不能将datetime列转换为字符串,这样我就可以使用contains。

有没有办法像我对整型数据类型所做的那样实现上面的方法。

EN

回答 2

Stack Overflow用户

发布于 2013-01-17 17:47:27

对此有一个简短的答案:不。但我认为sgmoore指出了你方法中的陷阱是正确的。DateTime的字符串表示形式可以在任何位置包含字符串,那么这有什么用呢?

看起来您只想选择日期>= 2000-01-01,这可以通过以下方式完成

代码语言:javascript
复制
var d1 = new DateTime(2000,1,1);
var query = from emp in entities.Employee
            where emp.CreatedDate >= d1
            select emp;

请告诉我这是否不符合您的意图,以及为什么匹配LIKE %20%会如此重要。如果是这样,那么只有使用.AsEnumerable()的方法才能完成这项工作。

票数 1
EN

Stack Overflow用户

发布于 2013-01-16 18:27:18

使用Linq2Sql,您可以执行以下操作:

代码语言:javascript
复制
var query=
   (from ee in entities.Employee
    where SqlMethods.Like(ee.CreatedDate.Value.ToString() , "%20%")
    select ee).ToList();

我不得不问,为什么?我正在努力想出任何可能的原因,为什么会有人想要这样的东西?

我想您应该知道这将与以下日期匹配

代码语言:javascript
复制
1900-01-01 20:00:00 
1900-01-01 00:00:20
1900-01-20 00:00:00
1920-01-01 00:00:00
2000-01-01 00:00:00

等等,等等

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14355760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档