English 中文(简体)
在使用LINQ时,条款与多条款之间的区别是什么?
原标题:When using LINQ, what is the difference between && and multiple where clauses?
  • 时间:2009-10-30 09:11:00
  •  标签:

我是新到的,昨天发现你可以有多个条款,例如:

var items = from object in objectList
where object.value1 < 100  
where object.value2 > 10  
select object;

也可以写:

var items = from object in objectList
where object.value1 < 100  
   && object.value2 > 10  
select object;

两者之间有什么区别?

最佳回答

第一项将转化为:

objectList.Where(o => o.value1 < 100).Where(o=> o.value2 > 10)

而第二项则将翻译为:

objectList.Where(o => o.value1 < 100 && o.value2 > 10)

因此,在第一个方面,您将拥有第一个过滤序列,再次过滤(第一序列包含所有具有价值和带的物体;100,第二序列包含所有具有价值和大体的物体;从第一个顺序看,10个),而第二位您将在同一实验室表述中进行同样的比较。 这对其他供应商来说,是有效的,取决于如何翻译表达。

问题回答

<><>>> 标的答案很少准确。

正如“Philippe”所说,首先将转化为:

objectList.Where(o => o.value1 < 100).Where(o=> o.value2 > 10)

而第二项则将翻译为:

objectList.Where(o => o.value1 < 100 && o.value2 > 10)

电话:。

如果你检查<代码>Linq s 源代码,请参看:

class WhereEnumerableIterator<TSource> : Iterator<TSource>
{
    public override IEnumerable<TSource> Where(Func<TSource, bool> predicate)
    {
        return new WhereEnumerableIterator<TSource>(source, 
            CombinePredicates(this.predicate, predicate));
    }
}

is do is Integrating the twoterras with && 双方:

static Func<TSource, bool> CombinePredicates<TSource>(Func<TSource, bool> predicate1,
    Func<TSource, bool> predicate2)
{
    return x => predicate1(x) && predicate2(x);
}

So objectList.Where(X) (Y)等于objectList。 (X &&Y),但查询时间(Which是极短的)和援引两个前提除外。

底线是it 不是过滤或重复收集两次,但一次是复合时间。

第一种做法是:

objectList.Where(o => o.value1 < 100)
          .Where(o => o.value2 > 10);

后者获得:

objectList.Where(o => o.value1 < 100 && o.value2 > 10);       

这在功能上是一样的,虽然第二种方法可以避免使用,但业绩的差异微不足道。 更便于阅读。

也就是说,如果你将准则重新用于物体。 如果你重新使用供应商,则取决于如何执行(如果在由此产生的询问中不考虑上游,结果可能是次最佳的)。

I ve just profile it. No difference in SQL code

在最基本的层面上,你们有两种行动,而不是一种行动。 利用反射器,是审查问题表达的另一端的最佳途径。

它们是否选择了同样的东西,取决于实际的林地结构提供商,它需要吸收整个树木,将其转换成另一个辛子。 准则编号:

C# in Depth,有助于你了解这个专题。

如何回答:与“安乐”和“安乐”;你不能保证对这两种说法进行评价(如果第一种情况是假的,那么第二种情况可能得不到评价)。 有了两个条款,就可以了。 不管它是否真实,它是否对我有利!

所有其他东西都是平等的,为了可读性,我将选择<条码>condition1 && conditions2版本。





相关问题
热门标签