﻿<?xml version="1.0" encoding="utf-8"?><Type Name="ReviewLinqMethodRule" FullName="Gendarme.Rules.Performance.ReviewLinqMethodRule"><TypeSignature Language="C#" Value="public sealed class ReviewLinqMethodRule : Gendarme.Framework.Rule, Gendarme.Framework.IMethodRule" /><TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit ReviewLinqMethodRule extends Gendarme.Framework.Rule implements class Gendarme.Framework.IMethodRule, class Gendarme.Framework.IRule" /><AssemblyInfo><AssemblyName>Gendarme.Rules.Performance</AssemblyName><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Base><BaseTypeName>Gendarme.Framework.Rule</BaseTypeName></Base><Interfaces><Interface><InterfaceName>Gendarme.Framework.IMethodRule</InterfaceName></Interface></Interfaces><Attributes><Attribute><AttributeName>Gendarme.Framework.EngineDependency(typeof(Gendarme.Framework.Engines.OpCodeEngine))</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Problem("A linq extension method with linear time complexity is used, but a more efficient method is available.")</AttributeName></Attribute><Attribute><AttributeName>Gendarme.Framework.Solution("Use the more efficient method.")</AttributeName></Attribute></Attributes><Docs><summary>
             Linq extension methods operate on sequences of values so they generally
             have linear time complexity. However you may be able to achieve better
             than linear time performance if you use a less general method or take
             advantage of a method provided by an <c>Sytem.Collections.Generic.IEnumerable&lt;T&gt;</c> 
             subclass.
             </summary><remarks>This rule is available since Gendarme 2.6</remarks><example>
             Bad example:
             <code>
             public string FirstOrMissing (IEnumerable&lt;string&gt; sequence, string missing)
             {
             	// Count () is O(n)
             	if (sequence.Count () &gt; 0) {
             		return sequence.First ();
             	}
             	return missing;
             }
             
             public void Append (List&lt;string&gt; lines, string line)
             {
             	// Last () is O(n)
             	if (lines.Count == 0 || lines.Last () != line) {
             		lines.Add (line);
             	}
             }
             </code></example><example>
             Good example:
             <code>
             public string FirstOrMissing (IEnumerable&lt;string&gt; sequence, string missing)
             {
             	// We don't need an exact count so we can use the O(1) Any () method.
             	if (sequence.Any ()) {
             		return sequence.First ();
             	}
             	return missing;
             }
             
             public void Append (List&lt;string&gt; lines, string line)
             {
             	// Lines is a List so we can use the O(1) subscript operator instead of
             	// the Last () method.
             	if (lines.Count == 0 || lines [lines.Count - 1] != line) {
             		lines.Add (line);
             	}
             }
             </code></example></Docs><Members><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public ReviewLinqMethodRule ();" /><MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" /><MemberType>Constructor</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><Parameters /><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="CheckMethod"><MemberSignature Language="C#" Value="public Gendarme.Framework.RuleResult CheckMethod (Mono.Cecil.MethodDefinition method);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance valuetype Gendarme.Framework.RuleResult CheckMethod(class Mono.Cecil.MethodDefinition method) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.RuleResult</ReturnType></ReturnValue><Parameters><Parameter Name="method" Type="Mono.Cecil.MethodDefinition" /></Parameters><Docs><param name="method">To be added.</param><summary>To be added.</summary><returns>To be added.</returns><remarks>To be added.</remarks></Docs></Member><Member MemberName="CountProperty"><MemberSignature Language="C#" Value="public readonly Gendarme.Framework.Helpers.MethodSignature CountProperty;" /><MemberSignature Language="ILAsm" Value=".field public initonly class Gendarme.Framework.Helpers.MethodSignature CountProperty" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.Helpers.MethodSignature</ReturnType></ReturnValue><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="Initialize"><MemberSignature Language="C#" Value="public override void Initialize (Gendarme.Framework.IRunner runner);" /><MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance void Initialize(class Gendarme.Framework.IRunner runner) cil managed" /><MemberType>Method</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="runner" Type="Gendarme.Framework.IRunner" /></Parameters><Docs><param name="runner">To be added.</param><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="LengthProperty"><MemberSignature Language="C#" Value="public readonly Gendarme.Framework.Helpers.MethodSignature LengthProperty;" /><MemberSignature Language="ILAsm" Value=".field public initonly class Gendarme.Framework.Helpers.MethodSignature LengthProperty" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.Helpers.MethodSignature</ReturnType></ReturnValue><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="Sort"><MemberSignature Language="C#" Value="public readonly Gendarme.Framework.Helpers.MethodSignature Sort;" /><MemberSignature Language="ILAsm" Value=".field public initonly class Gendarme.Framework.Helpers.MethodSignature Sort" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.Helpers.MethodSignature</ReturnType></ReturnValue><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member><Member MemberName="Subscript"><MemberSignature Language="C#" Value="public readonly Gendarme.Framework.Helpers.MethodSignature Subscript;" /><MemberSignature Language="ILAsm" Value=".field public initonly class Gendarme.Framework.Helpers.MethodSignature Subscript" /><MemberType>Field</MemberType><AssemblyInfo><AssemblyVersion>3.10.0.0</AssemblyVersion></AssemblyInfo><ReturnValue><ReturnType>Gendarme.Framework.Helpers.MethodSignature</ReturnType></ReturnValue><Docs><summary>To be added.</summary><remarks>To be added.</remarks></Docs></Member></Members></Type>