[Linq]使用EF To Linq执行类似sql的in语句

Posted 厦门德仔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Linq]使用EF To Linq执行类似sql的in语句相关的知识,希望对你有一定的参考价值。

使用EF的时候,我们经常会遇到一些查出在xx中的数据,类似sql in查询,比如查出id为18982,18976,1978的数据

我们可能会这样写

var wkids = “18982,18976,1978”;
var wks = CurrentRepository.GetAllQuery<Projects_WorkHour>(x=> wkids.Contains(x.WorkHour_Id.ToString()));

会发现不是我们想要的结果,id为18,89,76等只要在上面id存在的都会查出来,因为我们使用的是string.contains()只要包含的都会查出来

我们需要使用的是System.Linq下的contains,最后的结果就是我们的in查询,所以需要

1.using System.Linq

var wkids = “18982,18976,1978”;
string[] kk = wkids.Split(new string[] “,” , StringSplitOptions.RemoveEmptyEntries);
var wks = CurrentRepository.GetAllQuery<Projects_WorkHour>(x=> kk.Contains(x.WorkHour_Id.ToString()));

以上是关于[Linq]使用EF To Linq执行类似sql的in语句的主要内容,如果未能解决你的问题,请参考以下文章

用 LINQ to SQL 或 LINQ to EF 替换 NHibernate

为啥使用 EF / Linq to sql 创建性能不佳的查询如此容易[关闭]

Linq-to-sql EF4 - 从生成列表

EF Core Linq-to-Sql GroupBy SelectMany 不适用于 SQL Server

LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?

LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?