是什么超过contains
LinqTOEntities差高炮存在并包含
var s = new int[] { 1, 2, 3, 4, 5 };
dbset.where(x => s.contains(x.id);
或
var s = new int[] { 1, 2, 3, 4, 5 };
dbset.Where(x => s.Exists(y => x.id));
是什么超过contains
LinqTOEntities差高炮存在并包含
var s = new int[] { 1, 2, 3, 4, 5 };
dbset.where(x => s.contains(x.id);
或
var s = new int[] { 1, 2, 3, 4, 5 };
dbset.Where(x => s.Exists(y => x.id));
exists
之间的差的List<T>
一个方法,存在于阵列没有这样的方法或IEnumerable<T>
扩展。x => s.Exists(y => y == x.id)
(返回布尔你应该通过谓词,即方法)Contains
,Exists
不受支持。+1,你在解释这两种方法之间的差异方面做得比我好得多。但是你能否描述通过一个原始值和一个谓词之间的区别?我只是认为这对理解这两种方法之间的关键差异至关重要(因为EF支持'Any'而不是'Exists',所以它不像一个大问题\差异在这里) – 2013-03-18 16:24:51
@IlyaIvanov抱歉,没有让你在这里:)谓词是Exists方法签名的一部分,传递原始值和谓词之间的区别很简单 - 您可以使用谓词调用此方法,或者您的代码不编译 – 2013-03-18 16:29:44
例如,您可以捕获谓词中的局部变量,通过谓词访问它,从而创建比较灵活的条件。无论如何 - 让我们自己学习吧。说到语法 - 你的回答完全有效:) – 2013-03-18 16:31:29
'存在()'不存在。 – SLaks 2013-03-18 16:00:34
存在这样的方法。 – Phil 2013-03-18 16:01:14
为了说明,[列表]公开了[Exists()](http://msdn.microsoft.com/zh-cn/library/bfed8bca.aspx)。你的'''是一个数组,而不是一个列表。 –
2013-03-18 16:04:05