C# LINQ-Is包含的速度远远快于等于(=)?

C# LINQ-Is包含的速度远远快于等于(=)?,c#,linq,C#,Linq,我有一个根据我提供的ID返回大量数据的查询 results = (from x in database where x.ID == MY_SELECTED_ID select x).ToList(); 执行该查询大约需要40秒 然后我创建了另一个查询: results = (from x in database where (MyIDList.Contains(SqlFunctions.StringConve

我有一个根据我提供的ID返回大量数据的查询

results = (from x in database
          where x.ID == MY_SELECTED_ID
          select x).ToList();
执行该查询大约需要40秒

然后我创建了另一个查询:

results = (from x in database
           where 
           (MyIDList.Contains(SqlFunctions.StringConvert((double)x.ID).Trim())
           select x).ToList();
执行该查询大约需要10-15秒

那么,在处理大量数据时,是否包含的速度更快


谢谢

再测量一次,多次,按不同的顺序测量。这看起来像是缓存的结果。制定基准并不容易。您必须了解所有涉及的因素。您可以查看生成的查询。有一种方法可以将它们记录在调试窗口中。比较一下……欢迎来到SO!获取生成的查询,并在清除缓存后在DBMS上运行它们。在linq to sql中,c#的
=
等于sql中的
=
,c#的
包含()
方法在中转换为sql的
。至少对于.net core的entity framework,我经历了相反的情况,其中.Contains是在代码中计算的,因此速度要慢得多。我的建议是打开一个探查器(如果它是Sql Server),看看实际生成了什么。