C# LINQ-Is包含的速度远远快于等于(=)?
我有一个根据我提供的ID返回大量数据的查询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
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),看看实际生成了什么。