From 4f8f3e41ffef2ffc2d5d8700aaa2e43a7c734373 Mon Sep 17 00:00:00 2001
From: Stef Heyenrath ";
+ $matches = array();
+ $matchingFileIndices = array();
+ $rankings = array();
+
+ $isFirst = true;
+
+ foreach($keywords as $word)
+ {
+ if (!array_key_exists($word, $wordDictionary))
+ {
+ return "Nothing found";
+ }
+ $occurrences = $wordDictionary[$word];
+
+ $matches[$word] = $occurrences;
+ $occurrenceIndices = array();
+
+ // Get a list of the file indices for this match
+ foreach($occurrences as $entry)
+ array_push($occurrenceIndices, ($entry >> 16));
+
+ if($isFirst)
+ {
+ $isFirst = false;
+ foreach($occurrenceIndices as $i)
+ {
+ array_push($matchingFileIndices, $i);
+ }
+ }
+ else
+ {
+ // After the first match, remove files that do not appear for
+ // all found keywords.
+ for($idx = 0; $idx < count($matchingFileIndices); $idx++)
+ {
+ if (!in_array($matchingFileIndices[$idx], $occurrenceIndices))
+ {
+ array_splice($matchingFileIndices, $idx, 1);
+ $idx--;
+ }
+ }
+ }
+ }
+
+ if(count($matchingFileIndices) == 0)
+ {
+ return "Nothing found";
+ }
+
+ // Rank the files based on the number of times the words occurs
+ foreach($matchingFileIndices as $index)
+ {
+ // Split out the title, filename, and word count
+ $fileIndex = explode("\x00", $fileInfo[$index]);
+
+ $title = $fileIndex[0];
+ $filename = $fileIndex[1];
+ $wordCount = intval($fileIndex[2]);
+ $matchCount = 0;
+
+ foreach($keywords as $words)
+ {
+ $occurrences = $matches[$word];
+
+ foreach($occurrences as $entry)
+ {
+ if(($entry >> 16) == $index)
+ $matchCount += $entry & 0xFFFF;
+ }
+ }
+
+ $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount);
+ array_push($rankings, $r);
+
+ if(count($rankings) > 99)
+ break;
+ }
+
+ // Sort by rank in descending order or by page title in ascending order
+ if($sortByTitle)
+ {
+ usort($rankings, "cmprankbytitle");
+ }
+ else
+ {
+ usort($rankings, "cmprank");
+ }
+
+ // Format the file list and return the results
+ foreach($rankings as $r)
+ {
+ $f = $r->filename;
+ $t = $r->pageTitle;
+ $sb .= "
Omitted $c more results
ParseException Class |
+ Namespace: + System.Linq.Dynamic.Core.Exceptions
public sealed class ParseException : Exception
The ParseException type exposes the following members.
| + + | Name | Description |
|---|---|---|
| ParseException |
+ Initializes a new instance of the ParseException class with a specified error message and position.
+ |
| + + | Name | Description |
|---|---|---|
| Data | Gets a collection of key/value pairs that provide additional user-defined information about the exception. (Inherited from Exception.) | |
| HelpLink | Gets or sets a link to the help file associated with this exception. (Inherited from Exception.) | |
| HResult | Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception. (Inherited from Exception.) | |
| InnerException | Gets the Exception instance that caused the current exception. (Inherited from Exception.) | |
| Message | Gets a message that describes the current exception. (Inherited from Exception.) | |
| Position |
+ The location in the parsed string that produced the ParseException.
+ | |
| Source | Gets or sets the name of the application or the object that causes the error. (Inherited from Exception.) | |
| StackTrace | Gets a string representation of the immediate frames on the call stack. (Inherited from Exception.) | |
| TargetSite | Gets the method that throws the current exception. (Inherited from Exception.) |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| GetBaseException | When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. (Inherited from Exception.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetObjectData | When overridden in a derived class, sets the SerializationInfo with information about the exception. (Inherited from Exception.) | |
| GetType | Gets the runtime type of the current instance. (Inherited from Exception.) | |
| ToString |
+ Creates and returns a string representation of the current exception.
+ (Overrides ExceptionToString.) |
ExpressionParserParse Method |
+ Namespace: + System.Linq.Dynamic.Core.Parser
public Expression Parse( + Type resultType, + bool createParameterCtor = true +)
DynamicQueryableExtensionsLast Method |
| + + | Name | Description |
|---|---|---|
| Last(IQueryable) |
+ Returns the last element of a sequence.
+ | |
| Last(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ |
AbstractDynamicLinqCustomTypeProvider Constructor |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
protected AbstractDynamicLinqCustomTypeProvider()
GroupResult Properties |
The GroupResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Count |
+ The number of resulting elements in the group.
+ | |
| Items |
+ The resulting elements in the group.
+ | |
| Key |
+ The key value of the group.
+ | |
| Subgroups |
+ The resulting subgroups in the group.
+ |
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicEnumerableAsyncExtensionsToDynamicArrayAsync Method (IEnumerable, Type) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<Object[]> ToDynamicArrayAsync( + this IEnumerable source, + Type type +)
DynamicQueryableExtensionsTakeWhile Method |
| + + | Name | Description |
|---|---|---|
| TakeWhile(IQueryable, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ | |
| TakeWhile(IQueryable, ParsingConfig, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ |
DynamicExpressionParserParseLambda Method (Boolean, ParameterExpression, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + bool createParameterCtor, + ParameterExpression[] parameters, + Type resultType, + string expression, + params Object[] values +)
PagedResultTSourceQueryable Property |
+ Namespace: + System.Linq.Dynamic.Core
public IQueryable<TSource> Queryable { get; set; }
DynamicQueryableExtensionsGroupBy Method (IQueryable, ParsingConfig, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + ParsingConfig config, + string keySelector, + string resultSelector, + Object[] args +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)");
ExpressionParser Constructor |
+ Namespace: + System.Linq.Dynamic.Core.Parser
public ExpressionParser( + ParameterExpression[] parameters, + string expression, + Object[] values, + ParsingConfig parsingConfig +)
AbstractDynamicLinqCustomTypeProvider Methods |
The AbstractDynamicLinqCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| FindTypesMarkedWithDynamicLinqTypeAttribute |
+ Finds the types marked with DynamicLinqTypeAttribute.
+ | |
| GetAssemblyTypes |
+ Gets the assembly types in an Exception friendly way.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ResolveType |
+ Resolve any type which is registered in the current application domain.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsSelect Method |
| + + | Name | Description |
|---|---|---|
| Select(IQueryable, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| SelectTResult(IQueryable, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| Select(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| SelectTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| Select(IQueryable, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ | |
| Select(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ |
DynamicQueryableExtensionsWhere Method |
| + + | Name | Description |
|---|---|---|
| Where(IQueryable, LambdaExpression) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ |
DynamicQueryableExtensionsSelectManyTResult Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TResult> SelectMany<TResult>( + this IQueryable source, + string selector, + params Object[] args +) +
var permissions = users.SelectMany<Permission>("Roles.SelectMany(Permissions)");
DynamicQueryableExtensionsSelectMany Method (IQueryable, String, String, Object, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + string collectionSelector, + string resultSelector, + Object[] collectionSelectorArgs = null, + params Object[] resultSelectorArgs +)
// TODOEntityFrameworkDynamicQueryableExtensionsLastAsync Method |
| + + | Name | Description |
|---|---|---|
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
DynamicQueryableExtensionsAggregate Method |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Aggregate( + this IQueryable source, + string function, + string member +)
DynamicQueryableExtensions Methods |
The DynamicQueryableExtensions type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Aggregate |
+ Dynamically runs an aggregate function on the IQueryable.
+ | |
| Any(IQueryable) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, LambdaExpression) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, String, Object) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, ParsingConfig, String, Object) |
+ Determines whether a sequence contains any elements.
+ | |
| AsEnumerable |
+ Returns the input typed as IEnumerableT of dynamic.
+ | |
| Count(IQueryable) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, LambdaExpression) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, String, Object) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, ParsingConfig, String, Object) |
+ Returns the number of elements in a sequence.
+ | |
| DefaultIfEmpty(IQueryable) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ | |
| DefaultIfEmpty(IQueryable, Object) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ | |
| Distinct |
+ Returns distinct elements from a sequence by using the default equality comparer to compare values.
+ | |
| First(IQueryable) |
+ Returns the first element of a sequence.
+ | |
| First(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefault(IQueryable) |
+ Returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefault(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| GroupBy(IQueryable, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, FuncTElement, Object) |
+ Groups the elements of a sequence according to multiple specified key functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, ParsingConfig, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupJoin(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ | |
| GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ | |
| Join(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, ParsingConfig, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| Last(IQueryable) |
+ Returns the last element of a sequence.
+ | |
| Last(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| LastOrDefault(IQueryable) |
+ Returns the last element of a sequence, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| OrderBy(IQueryable, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderBy(IQueryable, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| Page(IQueryable, Int32, Int32) |
+ Returns the elements as paged.
+ | |
| PageTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged.
+ | |
| PageResult(IQueryable, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ | |
| PageResultTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ | |
| Reverse |
+ Inverts the order of the elements in a sequence.
+ | |
| Select(IQueryable, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| Select(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| Select(IQueryable, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ | |
| Select(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ | |
| SelectTResult(IQueryable, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| SelectTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| SelectMany(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectManyTResult(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| SelectManyTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| Single(IQueryable) |
+ Returns the only element of a sequence, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable) |
+ Returns the only element of a sequence, or a default value if the sequence
+ is empty; this method throws an exception if there is more than one element
+ in the sequence.
+ | |
| SingleOrDefault(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| Skip |
+ Bypasses a specified number of elements in a sequence and then returns the remaining elements.
+ | |
| SkipWhile(IQueryable, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ | |
| SkipWhile(IQueryable, ParsingConfig, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ | |
| Sum |
+ Computes the sum of a sequence of numeric values.
+ | |
| Take |
+ Returns a specified number of contiguous elements from the start of a sequence.
+ | |
| TakeWhile(IQueryable, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ | |
| TakeWhile(IQueryable, ParsingConfig, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ | |
| ThenBy(IOrderedQueryable, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenBy(IOrderedQueryable, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| Where(IQueryable, LambdaExpression) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ |
DynamicClassTryGetMember Method |
+ Namespace: + System.Linq.Dynamic.Core
public override bool TryGetMember( + GetMemberBinder binder, + out Object result +)
ParsingConfig Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public ParsingConfig()
DynamicQueryableExtensionsGroupJoin Method (IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupJoin( + this IQueryable outer, + ParsingConfig config, + IEnumerable inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +)
DynamicQueryableExtensionsFirstOrDefault Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object FirstOrDefault( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFramework.DynamicLinq Namespace |
| + + | Class | Description |
|---|---|---|
| EntityFrameworkDynamicQueryableExtensions |
+ Provides a set of static Async methods for querying data structures that implement IQueryable.
+ It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated,
+ or when downstream components only return column names to sort and filter by.
+ |
DynamicQueryableExtensionsOrderBy Method |
| + + | Name | Description |
|---|---|---|
| OrderBy(IQueryable, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderBy(IQueryable, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ |
DynamicFunctionsLike Method |
+ An implementation of the SQL LIKE operation. On relational databases this is usually directly + translated to SQL. +
+ Note that if this function is translated into SQL, then the semantics of the comparison will + depend on the database configuration. In particular, it may be either case-sensitive or + case-insensitive. If this function is evaluated on the client, then it will always use + a case-insensitive comparison. +
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static bool Like( + string matchExpression, + string pattern, + string escapeCharacter +)
AbstractDynamicLinqCustomTypeProviderFindTypesMarkedWithDynamicLinqTypeAttribute Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
protected IEnumerable<Type> FindTypesMarkedWithDynamicLinqTypeAttribute( + IEnumerable<Assembly> assemblies +)
DynamicQueryableExtensionsJoinTElement Method (IQueryableTElement, ParsingConfig, IEnumerableTElement, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TElement> Join<TElement>( + this IQueryable<TElement> outer, + ParsingConfig config, + IEnumerable<TElement> inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +) +
DynamicQueryableExtensionsLastOrDefault Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object LastOrDefault( + this IQueryable source +)
DynamicExpressionParserParseLambda Method (ParsingConfig, ParameterExpression, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + ParameterExpression[] parameters, + Type resultType, + string expression, + params Object[] values +)
DynamicProperty Properties |
The DynamicProperty type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Name |
+ Gets the name from the property.
+ | |
| Type |
+ Gets the type from the property.
+ |
DynamicQueryableExtensionsThenBy Method |
| + + | Name | Description |
|---|---|---|
| ThenBy(IOrderedQueryable, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenBy(IOrderedQueryable, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ |
GroupResultItems Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicQueryableExtensionsPageResultTSource Method (IQueryableTSource, Int32, Int32) |
+ Namespace: + System.Linq.Dynamic.Core
public static PagedResult<TSource> PageResult<TSource>( + this IQueryable<TSource> source, + int page, + int pageSize +) +
IAssemblyHelper Methods |
The IAssemblyHelper type exposes the following members.
| + + | Name | Description |
|---|---|---|
| GetAssemblies |
+ Gets the assemblies that have been loaded into the execution context of this application domain.
+ |
DynamicQueryableExtensionsSingleOrDefault Method |
| + + | Name | Description |
|---|---|---|
| SingleOrDefault(IQueryable) |
+ Returns the only element of a sequence, or a default value if the sequence
+ is empty; this method throws an exception if there is more than one element
+ in the sequence.
+ | |
| SingleOrDefault(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ |
DynamicQueryableExtensionsLastOrDefault Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object LastOrDefault( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsOrderBy Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable OrderBy( + this IQueryable source, + string ordering, + params Object[] args +)
var resultSingle = queryable.OrderBy("NumberProperty"); +var resultSingleDescending = queryable.OrderBy("NumberProperty DESC"); +var resultMultiple = queryable.OrderBy("NumberProperty, StringProperty DESC");
PagedResult Methods |
The PagedResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
ParsingConfig Methods |
The ParsingConfig type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method |
| + + | Name | Description |
|---|---|---|
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ |
DynamicQueryableExtensionsSelect Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Select( + this IQueryable source, + string selector, + params Object[] args +)
var singleField = queryable.Select("StringProperty"); +var dynamicObject = queryable.Select("new (StringProperty1, StringProperty2 as OtherStringPropertyName)");
DynamicLinqTypeAttribute Methods |
The DynamicLinqTypeAttribute type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) | |
| GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| IsDefaultAttribute | When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.) | |
| Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
PagedResultQueryable Property |
+ Namespace: + System.Linq.Dynamic.Core
PagedResultCurrentPage Property |
+ Namespace: + System.Linq.Dynamic.Core
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicQueryableExtensionsSelectMany Method (IQueryable, ParsingConfig, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + ParsingConfig config, + Type resultType, + string selector, + params Object[] args +)
var permissions = users.SelectMany(typeof(Permission), "Roles.SelectMany(Permissions)");
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method |
| + + | Name | Description |
|---|---|---|
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ |
DynamicQueryableExtensionsThenByTSource Method (IOrderedQueryableTSource, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable<TSource> ThenBy<TSource>( + this IOrderedQueryable<TSource> source, + ParsingConfig config, + string ordering, + params Object[] args +) +
var result = queryable.OrderBy<User>("LastName"); +var resultSingle = result.ThenBy<User>("NumberProperty"); +var resultSingleDescending = result.ThenBy<User>("NumberProperty DESC"); +var resultMultiple = result.ThenBy<User>("NumberProperty, StringProperty");
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsWhereTSource Method (IQueryableTSource, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TSource> Where<TSource>( + this IQueryable<TSource> source, + string predicate, + params Object[] args +) +
var result1 = queryable.Where("NumberProperty = 1"); +var result2 = queryable.Where("NumberProperty = @0", 1); +var result3 = queryable.Where("StringProperty = null"); +var result4 = queryable.Where("StringProperty = \"abc\""); +var result5 = queryable.Where("StringProperty = @0", "abc");
System.Linq.Dynamic.Core.CustomTypeProviders Namespace |
| + + | Class | Description |
|---|---|---|
| AbstractDynamicLinqCustomTypeProvider |
+ The abstract DynamicLinqCustomTypeProvider which is used by the IDynamicLinkCustomTypeProvider and can be used by a custom TypeProvider like in .NET Core.
+ | |
| DefaultDynamicLinqCustomTypeProvider |
+ The default IDynamicLinkCustomTypeProvider.
+ Scans the current AppDomain for all types marked with DynamicLinqTypeAttribute, and adds them as custom Dynamic Link types.
+
+ Also provides functionality to resolve a Type in the current Application Domain.
+
+ This class is used as default for full .NET Framework, so not for .NET Core
+ | |
| DynamicLinqTypeAttribute |
+ Indicates to Dynamic Linq to consider the Type as a valid dynamic linq type.
+ |
| + + | Interface | Description |
|---|---|---|
| IDynamicLinkCustomTypeProvider |
+ Interface for providing functionality to find custom types for or resolve any type.
+ |
PagedResultPageCount Property |
+ Namespace: + System.Linq.Dynamic.Core
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsOrderByTSource Method (IQueryableTSource, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable<TSource> OrderBy<TSource>( + this IQueryable<TSource> source, + string ordering, + params Object[] args +) +
var resultSingle = queryable.OrderBy<User>("NumberProperty"); +var resultSingleDescending = queryable.OrderBy<User>("NumberProperty DESC"); +var resultMultiple = queryable.OrderBy<User>("NumberProperty, StringProperty");
DynamicPropertyType Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicEnumerableExtensionsToDynamicList Method (IEnumerable, Type) |
+ Namespace: + System.Linq.Dynamic.Core
public static List<Object> ToDynamicList( + this IEnumerable source, + Type type +)
DynamicQueryableExtensionsJoin Method (IQueryable, IEnumerable, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Join( + this IQueryable outer, + IEnumerable inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +)
DynamicEnumerableExtensionsToDynamicList Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static List<Object> ToDynamicList( + this IEnumerable source +)
DynamicClassItem Property |
+ Namespace: + System.Linq.Dynamic.Core
public Object this[ + string name +] { get; set; }
ExtensibilityPoint Fields |
The ExtensibilityPoint type exposes the following members.
| + + | Name | Description |
|---|---|---|
| QueryOptimizer |
+ Place to optimize your queries. Example: Add a reference to Nuget package Linq.Expression.Optimizer
+ and in your program initializers set Extensibility.QueryOptimizer = ExpressionOptimizer.visit;
+ |
DynamicProperty Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public DynamicProperty( + string name, + Type type +)
DynamicQueryableExtensionsFirstOrDefault Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object FirstOrDefault( + this IQueryable source, + LambdaExpression lambda +)
DynamicQueryableExtensionsSingle Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Single( + this IQueryable source, + string predicate, + params Object[] args +)
ParsingConfigAllowNewToEvaluateAnyType Property |
+ Namespace: + System.Linq.Dynamic.Core
AbstractDynamicLinqCustomTypeProviderGetAssemblyTypes Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
protected IEnumerable<TypeInfo> GetAssemblyTypes( + IEnumerable<Assembly> assemblies +)
ExpressionParser Methods |
The ExpressionParser type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| Parse |
+ Uses the TextParser to parse the string into the specified result type.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsGroupByManyTElement Method (IEnumerableTElement, ParsingConfig, String) |
+ Namespace: + System.Linq.Dynamic.Core
public static IEnumerable<GroupResult> GroupByMany<TElement>( + this IEnumerable<TElement> source, + ParsingConfig config, + params string[] keySelectors +) +
DynamicQueryableExtensionsAny Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static bool Any( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.Any("Income > 50"); +var result2 = queryable.Any("Income > @0", 50); +var result3 = queryable.Select("Roles.Any()");
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method |
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ |
DynamicQueryableExtensionsThenByTSource Method (IOrderedQueryableTSource, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable<TSource> ThenBy<TSource>( + this IOrderedQueryable<TSource> source, + string ordering, + params Object[] args +) +
var result = queryable.OrderBy<User>("LastName"); +var resultSingle = result.ThenBy<User>("NumberProperty"); +var resultSingleDescending = result.ThenBy<User>("NumberProperty DESC"); +var resultMultiple = result.ThenBy<User>("NumberProperty, StringProperty");
DynamicExpressionParserParseLambda Method (ParsingConfig, Boolean, ParameterExpression, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + bool createParameterCtor, + ParameterExpression[] parameters, + Type resultType, + string expression, + params Object[] values +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensions Methods |
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
DynamicClass Constructor |
+ Namespace: + System.Linq.Dynamic.Core
protected DynamicClass()
DynamicExpressionParserParseLambda Method (Boolean, Type, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + bool createParameterCtor, + Type itType, + Type resultType, + string expression, + params Object[] values +)
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicQueryableExtensionsWhereTSource Method (IQueryableTSource, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TSource> Where<TSource>( + this IQueryable<TSource> source, + ParsingConfig config, + string predicate, + params Object[] args +) +
var result1 = queryable.Where("NumberProperty = 1"); +var result2 = queryable.Where("NumberProperty = @0", 1); +var result3 = queryable.Where("StringProperty = null"); +var result4 = queryable.Where("StringProperty = \"abc\""); +var result5 = queryable.Where("StringProperty = @0", "abc");
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicClass Methods |
The DynamicClass type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetDynamicMemberNames |
+ Returns the enumeration of all dynamic member names.
+ (Overrides DynamicObjectGetDynamicMemberNames.) | |
| GetDynamicPropertyValue(String) |
+ Gets the dynamic property value by name.
+ | |
| GetDynamicPropertyValueT(String) |
+ Gets the dynamic property by name.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetMetaObject | Provides a DynamicMetaObject that dispatches to the dynamic virtual methods. The object can be encapsulated inside another DynamicMetaObject to provide custom behavior for individual actions. This method supports the Dynamic Language Runtime infrastructure for language implementers and it is not intended to be used directly from your code. (Inherited from DynamicObject.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| SetDynamicPropertyValue(String, Object) |
+ Sets the dynamic property value by name.
+ | |
| SetDynamicPropertyValueT(String, T) |
+ Sets the dynamic property value by name.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) | |
| TryBinaryOperation | Provides implementation for binary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as addition and multiplication. (Inherited from DynamicObject.) | |
| TryConvert | Provides implementation for type conversion operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that convert an object from one type to another. (Inherited from DynamicObject.) | |
| TryCreateInstance | Provides the implementation for operations that initialize a new instance of a dynamic object. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryDeleteIndex | Provides the implementation for operations that delete an object by index. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryDeleteMember | Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryGetIndex | Provides the implementation for operations that get a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for indexing operations. (Inherited from DynamicObject.) | |
| TryGetMember |
+ Provides the implementation for operations that get member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as getting a value for a property.
+ (Overrides DynamicObjectTryGetMember(GetMemberBinder, Object).) | |
| TryInvoke | Provides the implementation for operations that invoke an object. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as invoking an object or a delegate. (Inherited from DynamicObject.) | |
| TryInvokeMember | Provides the implementation for operations that invoke a member. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as calling a method. (Inherited from DynamicObject.) | |
| TrySetIndex | Provides the implementation for operations that set a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that access objects by a specified index. (Inherited from DynamicObject.) | |
| TrySetMember |
+ Provides the implementation for operations that set member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as setting a value for a property.
+ (Overrides DynamicObjectTrySetMember(SetMemberBinder, Object).) | |
| TryUnaryOperation | Provides implementation for unary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as negation, increment, or decrement. (Inherited from DynamicObject.) |
DynamicClassGetDynamicPropertyValue Method |
| + + | Name | Description |
|---|---|---|
| GetDynamicPropertyValueT(String) |
+ Gets the dynamic property by name.
+ | |
| GetDynamicPropertyValue(String) |
+ Gets the dynamic property value by name.
+ |
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsCount Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static int Count( + this IQueryable source +)
IQueryable queryable = employees.AsQueryable();
+var result = queryable.Count();System.Linq.Dynamic.Core.Exceptions Namespace |
| + + | Class | Description |
|---|---|---|
| ParseException |
+ Represents errors that occur while parsing dynamic linq string expressions.
+ |
DynamicQueryableExtensionsGroupByManyTElement Method (IEnumerableTElement, String) |
+ Namespace: + System.Linq.Dynamic.Core
public static IEnumerable<GroupResult> GroupByMany<TElement>( + this IEnumerable<TElement> source, + params string[] keySelectors +) +
DynamicFunctionsLike Method |
+ An implementation of the SQL LIKE operation. On relational databases this is usually directly + translated to SQL. +
+ Note that if this function is translated into SQL, then the semantics of the comparison will + depend on the database configuration. In particular, it may be either case-sensitive or + case-insensitive. If this function is evaluated on the client, then it will always use + a case-insensitive comparison. +
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static bool Like( + string matchExpression, + string pattern +)
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, String, CancellationToken, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + string predicate, + CancellationToken cancellationToken = null, + params Object[] args +)
DynamicQueryableExtensionsGroupJoin Method |
| + + | Name | Description |
|---|---|---|
| GroupJoin(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ | |
| GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ |
ParsingConfig Properties |
The ParsingConfig type exposes the following members.
| + + | Name | Description |
|---|---|---|
| AllowNewToEvaluateAnyType |
+ Allows the New() keyword to evaluate any available Type. Default value is false.
+ | |
| AreContextKeywordsEnabled |
+ Determines if the context keywords (it, parent, and root) are valid and usable inside a Dynamic Linq string expression.
+ Does not affect the usability of the equivalent context symbols ($, ^ and ~).
+ Default value is true.
+ | |
| CustomTypeProvider |
+ Gets or sets the IDynamicLinkCustomTypeProvider.
+ | |
| Default |
+ Default ParsingConfig
+ | |
| DefaultEFCore21 |
+ Default ParsingConfig for EntityFramework Core 2.1 and higher
+ | |
| EvaluateGroupByAtDatabase |
+ Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database level. Default value is false.
+ See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation
+
+ Remark: when this setting is set to 'true', make sure to supply this ParsingConfig as first parameter on the extension methods.
+ | |
| ExpressionPromoter |
+ Gets or sets the IExpressionPromoter.
+ | |
| RenameParameterExpression |
+ Renames the (Typed)ParameterExpression empty Name to a the correct supplied name from `it`. Default value is false.
+ | |
| UseDynamicObjectClassForAnonymousTypes |
+ Gets or sets a value indicating whether to use dynamic object class for anonymous types. Default value is false.
+ | |
| UseParameterizedNamesInDynamicQuery |
+ Use Parameterized Names in generated dynamic SQL query. Default set to false.
+ See https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139_entity-framework-dynamic-queries-and-parameterization.mkd
+ |
DynamicQueryableExtensionsSkipWhile Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SkipWhile( + this IQueryable source, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.SkipWhile("Income > 50"); +var result2 = queryable.SkipWhile("Income > @0", 50);
DynamicQueryableExtensionsWhere Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Where( + this IQueryable source, + string predicate, + params Object[] args +)
var result1 = queryable.Where("NumberProperty = 1"); +var result2 = queryable.Where("NumberProperty = @0", 1); +var result3 = queryable.Where("StringProperty = null"); +var result4 = queryable.Where("StringProperty = \"abc\""); +var result5 = queryable.Where("StringProperty = @0", "abc");
ExtensibilityPoint Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public ExtensibilityPoint()
DynamicQueryableExtensionsJoinTElement Method (IQueryableTElement, IEnumerableTElement, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TElement> Join<TElement>( + this IQueryable<TElement> outer, + IEnumerable<TElement> inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +) +
DynamicClassSetDynamicPropertyValueT Method (String, T) |
+ Namespace: + System.Linq.Dynamic.Core
public void SetDynamicPropertyValue<T>( + string propertyName, + T value +) +
ExpressionParser Properties |
The ExpressionParser type exposes the following members.
| + + | Name | Description |
|---|---|---|
| ItName |
+ Gets name for the `it` field. By default this is set to the KeyWord value "it".
+ |
DynamicQueryableExtensionsPage Method (IQueryable, Int32, Int32) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Page( + this IQueryable source, + int page, + int pageSize +)
DynamicQueryableExtensionsGroupJoin Method (IQueryable, IEnumerable, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupJoin( + this IQueryable outer, + IEnumerable inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +)
DynamicEnumerableAsyncExtensionsToDynamicArrayAsyncT Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<T[]> ToDynamicArrayAsync<T>( + this IEnumerable source +) +
DefaultDynamicLinqCustomTypeProviderGetCustomTypes Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public virtual HashSet<Type> GetCustomTypes()
ParseException Properties |
The ParseException type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Data | Gets a collection of key/value pairs that provide additional user-defined information about the exception. (Inherited from Exception.) | |
| HelpLink | Gets or sets a link to the help file associated with this exception. (Inherited from Exception.) | |
| HResult | Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception. (Inherited from Exception.) | |
| InnerException | Gets the Exception instance that caused the current exception. (Inherited from Exception.) | |
| Message | Gets a message that describes the current exception. (Inherited from Exception.) | |
| Position |
+ The location in the parsed string that produced the ParseException.
+ | |
| Source | Gets or sets the name of the application or the object that causes the error. (Inherited from Exception.) | |
| StackTrace | Gets a string representation of the immediate frames on the call stack. (Inherited from Exception.) | |
| TargetSite | Gets the method that throws the current exception. (Inherited from Exception.) |
DynamicClassSetDynamicPropertyValue Method |
| + + | Name | Description |
|---|---|---|
| SetDynamicPropertyValue(String, Object) |
+ Sets the dynamic property value by name.
+ | |
| SetDynamicPropertyValueT(String, T) |
+ Sets the dynamic property value by name.
+ |
IDynamicLinkCustomTypeProvider Methods |
The IDynamicLinkCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| GetCustomTypes |
+ Returns a list of custom types that System.Linq.Dynamic.Core will understand.
+ | |
| ResolveType |
+ Resolve any type which is registered in the current application domain.
+ |
DynamicExpressionParserParseLambda Method |
| + + | Name | Description |
|---|---|---|
| ParseLambda(Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambdaT, TResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambda(ParsingConfig, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, ParameterExpression, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ |
DynamicQueryableExtensionsLast Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Last( + this IQueryable source, + string predicate, + params Object[] args +)
IAssemblyHelperGetAssemblies Method |
+ Namespace: + System.Linq.Dynamic.Core
Assembly[] GetAssemblies()
EntityFrameworkDynamicQueryableExtensions Class |
+ Namespace: + EntityFramework.DynamicLinq
public static class EntityFrameworkDynamicQueryableExtensions
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
GroupResult Class |
+ Namespace: + System.Linq.Dynamic.Core
public class GroupResult
The GroupResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| GroupResult | Initializes a new instance of the GroupResult class |
| + + | Name | Description |
|---|---|---|
| Count |
+ The number of resulting elements in the group.
+ | |
| Items |
+ The resulting elements in the group.
+ | |
| Key |
+ The key value of the group.
+ | |
| Subgroups |
+ The resulting subgroups in the group.
+ |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString |
+ Returns a String showing the key of the group and the number of items in the group.
+ (Overrides ObjectToString.) |
ParsingConfig Class |
+ Namespace: + System.Linq.Dynamic.Core
public class ParsingConfig
The ParsingConfig type exposes the following members.
| + + | Name | Description |
|---|---|---|
| ParsingConfig | Initializes a new instance of the ParsingConfig class |
| + + | Name | Description |
|---|---|---|
| AllowNewToEvaluateAnyType |
+ Allows the New() keyword to evaluate any available Type. Default value is false.
+ | |
| AreContextKeywordsEnabled |
+ Determines if the context keywords (it, parent, and root) are valid and usable inside a Dynamic Linq string expression.
+ Does not affect the usability of the equivalent context symbols ($, ^ and ~).
+ Default value is true.
+ | |
| CustomTypeProvider |
+ Gets or sets the IDynamicLinkCustomTypeProvider.
+ | |
| Default |
+ Default ParsingConfig
+ | |
| DefaultEFCore21 |
+ Default ParsingConfig for EntityFramework Core 2.1 and higher
+ | |
| EvaluateGroupByAtDatabase |
+ Gets or sets a value indicating whether the EntityFramework version supports evaluating GroupBy at database level. Default value is false.
+ See https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-2.1#linq-groupby-translation
+
+ Remark: when this setting is set to 'true', make sure to supply this ParsingConfig as first parameter on the extension methods.
+ | |
| ExpressionPromoter |
+ Gets or sets the IExpressionPromoter.
+ | |
| RenameParameterExpression |
+ Renames the (Typed)ParameterExpression empty Name to a the correct supplied name from `it`. Default value is false.
+ | |
| UseDynamicObjectClassForAnonymousTypes |
+ Gets or sets a value indicating whether to use dynamic object class for anonymous types. Default value is false.
+ | |
| UseParameterizedNamesInDynamicQuery |
+ Use Parameterized Names in generated dynamic SQL query. Default set to false.
+ See https://github.com/graeme-hill/gblog/blob/master/source_content/articles/2014.139_entity-framework-dynamic-queries-and-parameterization.mkd
+ |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
ExtensibilityPointQueryOptimizer Field |
+ Namespace: + System.Linq.Dynamic.Core
public static Func<Expression, Expression> QueryOptimizer
GroupResult Methods |
The GroupResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString |
+ Returns a String showing the key of the group and the number of items in the group.
+ (Overrides ObjectToString.) |
DynamicQueryableExtensionsPageTSource Method (IQueryableTSource, Int32, Int32) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TSource> Page<TSource>( + this IQueryable<TSource> source, + int page, + int pageSize +) +
DynamicQueryableExtensionsGroupByMany Method |
| + + | Name | Description |
|---|---|---|
| GroupByManyTElement(IEnumerableTElement, FuncTElement, Object) |
+ Groups the elements of a sequence according to multiple specified key functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, ParsingConfig, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ |
DynamicQueryableExtensionsGroupBy Method (IQueryable, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + string keySelector, + string resultSelector, + Object[] args +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)");
GroupResultCount Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicEnumerableExtensions Class |
+ Namespace: + System.Linq.Dynamic.Core
public static class DynamicEnumerableExtensions
| + + | Name | Description |
|---|---|---|
| ToDynamicArray(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArray(IEnumerable, Type) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayT(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicList(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicList(IEnumerable, Type) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListT(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ |
DynamicQueryableExtensionsJoin Method |
| + + | Name | Description |
|---|---|---|
| Join(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, ParsingConfig, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ |
PagedResultTSource Class |
+ Namespace: + System.Linq.Dynamic.Core
public class PagedResult<TSource> : PagedResult +
The PagedResultTSource type exposes the following members.
| + + | Name | Description |
|---|---|---|
| PagedResultTSource | Initializes a new instance of the PagedResultTSource class |
| + + | Name | Description |
|---|---|---|
| CurrentPage |
+ Gets or sets the current page.
+ (Inherited from PagedResult.) | |
| PageCount |
+ Gets or sets the page count.
+ (Inherited from PagedResult.) | |
| PageSize |
+ Gets or sets the size of the page.
+ (Inherited from PagedResult.) | |
| Queryable |
+ Gets or sets the queryable.
+ | |
| RowCount |
+ Gets or sets the row count.
+ (Inherited from PagedResult.) |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsSingle Method |
| + + | Name | Description |
|---|---|---|
| Single(IQueryable) |
+ Returns the only element of a sequence, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ |
ParsingConfigDefault Property |
+ Namespace: + System.Linq.Dynamic.Core
EntityFrameworkDynamicQueryableExtensions Methods |
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
DynamicClassTrySetMember Method |
+ Namespace: + System.Linq.Dynamic.Core
public override bool TrySetMember( + SetMemberBinder binder, + Object value +)
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsFirst Method |
| + + | Name | Description |
|---|---|---|
| First(IQueryable) |
+ Returns the first element of a sequence.
+ | |
| First(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ |
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method |
| + + | Name | Description |
|---|---|---|
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ |
DynamicQueryableExtensionsThenBy Method (IOrderedQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable ThenBy( + this IOrderedQueryable source, + ParsingConfig config, + string ordering, + params Object[] args +)
var result = queryable.OrderBy("LastName"); +var resultSingle = result.OrderBy("NumberProperty"); +var resultSingleDescending = result.OrderBy("NumberProperty DESC"); +var resultMultiple = result.OrderBy("NumberProperty, StringProperty DESC");
IDynamicLinkCustomTypeProviderGetCustomTypes Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
ParseExceptionToString Method |
+ Namespace: + System.Linq.Dynamic.Core.Exceptions
public override string ToString()
IDynamicLinkCustomTypeProviderResolveType Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
Type ResolveType( + string typeName +)
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method |
| + + | Name | Description |
|---|---|---|
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ |
DynamicQueryableExtensionsLast Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Last( + this IQueryable source, + LambdaExpression lambda +)
DefaultDynamicLinqCustomTypeProviderResolveType Method |
| + + | Name | Description |
|---|---|---|
| ResolveType(String) |
+ Resolve any type which is registered in the current application domain.
+ | |
| ResolveType(IEnumerableAssembly, String) |
+ Resolve any type which is registered in the current application domain.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) |
ParsingConfigUseDynamicObjectClassForAnonymousTypes Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicEnumerableExtensionsToDynamicListT Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static List<T> ToDynamicList<T>( + this IEnumerable source +) +
DynamicQueryableExtensionsCount Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static int Count( + this IQueryable source, + LambdaExpression lambda +)
PagedResultRowCount Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicQueryableExtensionsSelectMany Method (IQueryable, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + Type resultType, + string selector, + params Object[] args +)
var permissions = users.SelectMany(typeof(Permission), "Roles.SelectMany(Permissions)");
DynamicProperty Methods |
The DynamicProperty type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
ExpressionParserItName Property |
+ Namespace: + System.Linq.Dynamic.Core.Parser
PagedResult Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public PagedResult()
DynamicPropertyName Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicExpressionParserParseLambdaT, TResult Method (ParsingConfig, Boolean, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Expression<Func<T, TResult>> ParseLambda<T, TResult>( + ParsingConfig parsingConfig, + bool createParameterCtor, + string expression, + params Object[] values +) +
DynamicQueryableExtensionsAny Method |
| + + | Name | Description |
|---|---|---|
| Any(IQueryable) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, LambdaExpression) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, String, Object) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, ParsingConfig, String, Object) |
+ Determines whether a sequence contains any elements.
+ |
DynamicQueryableExtensionsSkipWhile Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SkipWhile( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.SkipWhile("Income > 50"); +var result2 = queryable.SkipWhile("Income > @0", 50);
GroupResult Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public GroupResult()
DynamicQueryableExtensionsDistinct Method |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Distinct( + this IQueryable source +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.Distinct(); +var result2 = queryable.Select("Roles.Distinct()");
IExpressionPromoterPromote Method |
+ Namespace: + System.Linq.Dynamic.Core.Parser
Expression Promote( + Expression expr, + Type type, + bool exact, + bool convertExpr +)
DynamicQueryableExtensionsDefaultIfEmpty Method |
| + + | Name | Description |
|---|---|---|
| DefaultIfEmpty(IQueryable) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ | |
| DefaultIfEmpty(IQueryable, Object) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ |
DynamicLinqTypeAttribute Properties |
The DynamicLinqTypeAttribute type exposes the following members.
| + + | Name | Description |
|---|---|---|
| TypeId | When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.) |
DynamicExpressionParserParseLambdaTResult Method (ParsingConfig, Boolean, ParameterExpression, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Expression<Func<TResult>> ParseLambda<TResult>( + ParsingConfig parsingConfig, + bool createParameterCtor, + ParameterExpression[] parameters, + string expression, + params Object[] values +) +
DynamicQueryableExtensionsSelectMany Method |
| + + | Name | Description |
|---|---|---|
| SelectMany(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectManyTResult(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectManyTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ |
DynamicQueryableExtensionsSelectMany Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + ParsingConfig config, + string selector, + params Object[] args +)
var roles = users.SelectMany("Roles");
ParsingConfigCustomTypeProvider Property |
+ Namespace: + System.Linq.Dynamic.Core
public IDynamicLinkCustomTypeProvider CustomTypeProvider { get; set; }
DynamicQueryableExtensionsSingleOrDefault Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object SingleOrDefault( + this IQueryable source, + LambdaExpression lambda +)
DefaultDynamicLinqCustomTypeProvider Methods |
The DefaultDynamicLinqCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| FindTypesMarkedWithDynamicLinqTypeAttribute |
+ Finds the types marked with DynamicLinqTypeAttribute.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| GetAssemblyTypes |
+ Gets the assembly types in an Exception friendly way.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| GetCustomTypes |
+ Returns a list of custom types that System.Linq.Dynamic.Core will understand.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ResolveType(String) |
+ Resolve any type which is registered in the current application domain.
+ | |
| ResolveType(IEnumerableAssembly, String) |
+ Resolve any type which is registered in the current application domain.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsAsEnumerable Method |
+ Namespace: + System.Linq.Dynamic.Core
public static IEnumerable<Object> AsEnumerable( + this IQueryable source +)
DynamicQueryableExtensionsSingle Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Single( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
DynamicExpressionParser Methods |
| + + | Name | Description |
|---|---|---|
| ParseLambda(Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, ParameterExpression, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambdaT, TResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ |
ExtensibilityPoint Methods |
The ExtensibilityPoint type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsLastOrDefault Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object LastOrDefault( + this IQueryable source, + LambdaExpression lambda +)
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsCount Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static int Count( + this IQueryable source, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.Count("Income > 50"); +var result2 = queryable.Count("Income > @0", 50); +var result3 = queryable.Select("Roles.Count()");
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicEnumerableAsyncExtensionsToDynamicArrayAsync Method |
| + + | Name | Description |
|---|---|---|
| ToDynamicArrayAsync(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsyncT(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsync(IEnumerable, Type) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ |
DynamicQueryableExtensionsSum Method |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Sum( + this IQueryable source +)
ParsingConfigRenameParameterExpression Property |
+ Namespace: + System.Linq.Dynamic.Core
PagedResultTSource Methods |
The PagedResultTSource generic type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsGroupBy Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + string keySelector, + params Object[] args +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)");
DynamicClassFactory Methods |
The DynamicClassFactory type exposes the following members.
| + + | Name | Description |
|---|---|---|
| CreateType |
+ The CreateType method creates a new data class with a given set of public properties and returns the System.Type object for the newly created class. If a data class with an identical sequence of properties has already been created, the System.Type object for this class is returned.
+ Data classes implement private instance variables and read/write property accessors for the specified properties.Data classes also override the Equals and GetHashCode members to implement by-value equality.
+ Data classes are created in an in-memory assembly in the current application domain. All data classes inherit from DynamicClass and are given automatically generated names that should be considered private (the names will be unique within the application domain but not across multiple invocations of the application). Note that once created, a data class stays in memory for the lifetime of the current application domain. There is currently no way to unload a dynamically created data class.
+ The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers. This feature in turn is often used with the dynamic Select method to create projections.
+ |
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + string predicate, + params Object[] args +)
ParseException Constructor |
+ Namespace: + System.Linq.Dynamic.Core.Exceptions
public ParseException( + string message, + int position +)
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicExpressionParser Class |
+ Namespace: + System.Linq.Dynamic.Core
public static class DynamicExpressionParser
| + + | Name | Description |
|---|---|---|
| ParseLambda(Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression. (Also create a constructor for all the parameters. Note that this doesn't work for Linq-to-Database entities.)
+ | |
| ParseLambda(ParsingConfig, Boolean, ParameterExpression, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambda(ParsingConfig, Boolean, Type, Type, String, Object) |
+ Parses an expression into a LambdaExpression.
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambdaTResult(ParsingConfig, Boolean, ParameterExpression, String, Object) |
+ Parses an expression into a Typed Expression.
+ | |
| ParseLambdaT, TResult(ParsingConfig, Boolean, String, Object) |
+ Parses an expression into a Typed Expression.
+ |
ExpressionParser Class |
+ Namespace: + System.Linq.Dynamic.Core.Parser
public class ExpressionParser
The ExpressionParser type exposes the following members.
| + + | Name | Description |
|---|---|---|
| ExpressionParser |
+ Initializes a new instance of the ExpressionParser class.
+ |
| + + | Name | Description |
|---|---|---|
| ItName |
+ Gets name for the `it` field. By default this is set to the KeyWord value "it".
+ |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| Parse |
+ Uses the TextParser to parse the string into the specified result type.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsSingleOrDefault Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object SingleOrDefault( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicClassFactory Class |
+ Namespace: + System.Linq.Dynamic.Core
public static class DynamicClassFactory
The DynamicClassFactory type exposes the following members.
| + + | Name | Description |
|---|---|---|
| CreateType |
+ The CreateType method creates a new data class with a given set of public properties and returns the System.Type object for the newly created class. If a data class with an identical sequence of properties has already been created, the System.Type object for this class is returned.
+ Data classes implement private instance variables and read/write property accessors for the specified properties.Data classes also override the Equals and GetHashCode members to implement by-value equality.
+ Data classes are created in an in-memory assembly in the current application domain. All data classes inherit from DynamicClass and are given automatically generated names that should be considered private (the names will be unique within the application domain but not across multiple invocations of the application). Note that once created, a data class stays in memory for the lifetime of the current application domain. There is currently no way to unload a dynamically created data class.
+ The dynamic expression parser uses the CreateClass methods to generate classes from data object initializers. This feature in turn is often used with the dynamic Select method to create projections.
+ |
DynamicQueryableExtensionsWhere Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Where( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
var result1 = queryable.Where("NumberProperty = 1"); +var result2 = queryable.Where("NumberProperty = @0", 1); +var result3 = queryable.Where("StringProperty = null"); +var result4 = queryable.Where("StringProperty = \"abc\""); +var result5 = queryable.Where("StringProperty = @0", "abc");
DynamicEnumerableExtensionsToDynamicList Method |
| + + | Name | Description |
|---|---|---|
| ToDynamicList(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListT(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicList(IEnumerable, Type) |
+ Creates a list of dynamic objects from a IEnumerable.
+ |
DefaultDynamicLinqCustomTypeProvider Class |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public class DefaultDynamicLinqCustomTypeProvider : AbstractDynamicLinqCustomTypeProvider, + IDynamicLinkCustomTypeProvider
The DefaultDynamicLinqCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| DefaultDynamicLinqCustomTypeProvider | Initializes a new instance of the DefaultDynamicLinqCustomTypeProvider class |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| FindTypesMarkedWithDynamicLinqTypeAttribute |
+ Finds the types marked with DynamicLinqTypeAttribute.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| GetAssemblyTypes |
+ Gets the assembly types in an Exception friendly way.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| GetCustomTypes |
+ Returns a list of custom types that System.Linq.Dynamic.Core will understand.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ResolveType(String) |
+ Resolve any type which is registered in the current application domain.
+ | |
| ResolveType(IEnumerableAssembly, String) |
+ Resolve any type which is registered in the current application domain.
+ (Inherited from AbstractDynamicLinqCustomTypeProvider.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsLastOrDefault Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object LastOrDefault( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method |
| + + | Name | Description |
|---|---|---|
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ |
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicEnumerableAsyncExtensionsToDynamicArrayAsync Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<Object[]> ToDynamicArrayAsync( + this IEnumerable source +)
DynamicExpressionParserParseLambda Method (ParsingConfig, Boolean, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + bool createParameterCtor, + Type resultType, + string expression, + params Object[] values +)
DynamicExpressionParserParseLambda Method (Type, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + Type itType, + Type resultType, + string expression, + params Object[] values +)
GroupResultSubgroups Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicQueryableExtensionsSkipWhile Method |
| + + | Name | Description |
|---|---|---|
| SkipWhile(IQueryable, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ | |
| SkipWhile(IQueryable, ParsingConfig, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ |
ParseExceptionPosition Property |
+ Namespace: + System.Linq.Dynamic.Core.Exceptions
DynamicQueryableExtensionsOrderBy Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable OrderBy( + this IQueryable source, + ParsingConfig config, + string ordering, + params Object[] args +)
var resultSingle = queryable.OrderBy("NumberProperty"); +var resultSingleDescending = queryable.OrderBy("NumberProperty DESC"); +var resultMultiple = queryable.OrderBy("NumberProperty, StringProperty DESC");
DynamicFunctions Class |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static class DynamicFunctions
GroupResultToString Method |
+ Namespace: + System.Linq.Dynamic.Core
public override string ToString()
DefaultDynamicLinqCustomTypeProvider Constructor |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public DefaultDynamicLinqCustomTypeProvider()
DynamicExpressionParserParseLambda Method (ParameterExpression, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParameterExpression[] parameters, + Type resultType, + string expression, + params Object[] values +)
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
PagedResult Properties |
The PagedResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| CurrentPage |
+ Gets or sets the current page.
+ | |
| PageCount |
+ Gets or sets the page count.
+ | |
| PageSize |
+ Gets or sets the size of the page.
+ | |
| Queryable |
+ Gets or sets the queryable.
+ | |
| RowCount |
+ Gets or sets the row count.
+ |
DynamicQueryableExtensionsCount Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static int Count( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.Count("Income > 50"); +var result2 = queryable.Count("Income > @0", 50); +var result3 = queryable.Select("Roles.Count()");
AbstractDynamicLinqCustomTypeProviderResolveType Method |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
protected Type ResolveType( + IEnumerable<Assembly> assemblies, + string typeName +)
DynamicQueryableExtensionsSelectMany Method (IQueryable, ParsingConfig, String, String, Object, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + ParsingConfig config, + string collectionSelector, + string resultSelector, + Object[] collectionSelectorArgs = null, + params Object[] resultSelectorArgs +)
// TODODynamicQueryableExtensionsFirstOrDefault Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object FirstOrDefault( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsSelectTResult Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TResult> Select<TResult>( + this IQueryable source, + ParsingConfig config, + string selector, + params Object[] args +) +
var users = queryable.Select<User>("new (Username, Pwd as Password)");
DynamicQueryableExtensionsSelectMany Method (IQueryable, String, String, String, String, Object, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + string collectionSelector, + string resultSelector, + string collectionParameterName, + string resultParameterName, + Object[] collectionSelectorArgs = null, + params Object[] resultSelectorArgs +)
// TODOParsingConfigUseParameterizedNamesInDynamicQuery Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicQueryableExtensionsLast Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Last( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
Please try to load the page again. If the error persists, please contact the site administrator.
+The URL might be misspelled or the page you are looking for is no longer available. If you entered +the web address, check that it doesn't contain a typo. You can use the search box at the top of the page to +try and locate the page.
+DynamicQueryableExtensionsGroupBy Method |
| + + | Name | Description |
|---|---|---|
| GroupBy(IQueryable, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ |
DynamicClassFactoryCreateType Method |
+ Namespace: + System.Linq.Dynamic.Core
public static Type CreateType( + IList<DynamicProperty> properties, + bool createParameterCtor = true +)
DynamicProperty[] props = new DynamicProperty[] { new DynamicProperty("Name", typeof(string)), new DynamicProperty("Birthday", typeof(DateTime)) }; +Type type = DynamicClassFactory.CreateType(props); +DynamicClass dynamicClass = Activator.CreateInstance(type) as DynamicClass; +dynamicClass.SetDynamicProperty("Name", "Albert"); +dynamicClass.SetDynamicProperty("Birthday", new DateTime(1879, 3, 14)); +Console.WriteLine(dynamicClass);
AbstractDynamicLinqCustomTypeProvider Class |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public abstract class AbstractDynamicLinqCustomTypeProvider
The AbstractDynamicLinqCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| AbstractDynamicLinqCustomTypeProvider | Initializes a new instance of the AbstractDynamicLinqCustomTypeProvider class |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| FindTypesMarkedWithDynamicLinqTypeAttribute |
+ Finds the types marked with DynamicLinqTypeAttribute.
+ | |
| GetAssemblyTypes |
+ Gets the assembly types in an Exception friendly way.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ResolveType |
+ Resolve any type which is registered in the current application domain.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicQueryableExtensionsPageResult Method (IQueryable, Int32, Int32) |
+ Namespace: + System.Linq.Dynamic.Core
public static PagedResult PageResult( + this IQueryable source, + int page, + int pageSize +)
DynamicQueryableExtensions Class |
+ Namespace: + System.Linq.Dynamic.Core
public static class DynamicQueryableExtensions
The DynamicQueryableExtensions type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Aggregate |
+ Dynamically runs an aggregate function on the IQueryable.
+ | |
| Any(IQueryable) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, LambdaExpression) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, String, Object) |
+ Determines whether a sequence contains any elements.
+ | |
| Any(IQueryable, ParsingConfig, String, Object) |
+ Determines whether a sequence contains any elements.
+ | |
| AsEnumerable |
+ Returns the input typed as IEnumerableT of dynamic.
+ | |
| Count(IQueryable) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, LambdaExpression) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, String, Object) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, ParsingConfig, String, Object) |
+ Returns the number of elements in a sequence.
+ | |
| DefaultIfEmpty(IQueryable) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ | |
| DefaultIfEmpty(IQueryable, Object) |
+ Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.
+ | |
| Distinct |
+ Returns distinct elements from a sequence by using the default equality comparer to compare values.
+ | |
| First(IQueryable) |
+ Returns the first element of a sequence.
+ | |
| First(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| First(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefault(IQueryable) |
+ Returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefault(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| GroupBy(IQueryable, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupBy(IQueryable, ParsingConfig, String, String, Object) |
+ Groups the elements of a sequence according to a specified key string function
+ and creates a result value from each group and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, FuncTElement, Object) |
+ Groups the elements of a sequence according to multiple specified key functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupByManyTElement(IEnumerableTElement, ParsingConfig, String) |
+ Groups the elements of a sequence according to multiple specified key string functions
+ and creates a result value from each group (and subgroups) and its key.
+ | |
| GroupJoin(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ | |
| GroupJoin(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys.
+ | |
| Join(IQueryable, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| Join(IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| JoinTElement(IQueryableTElement, ParsingConfig, IEnumerableTElement, String, String, String, Object) |
+ Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys.
+ | |
| Last(IQueryable) |
+ Returns the last element of a sequence.
+ | |
| Last(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| Last(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition.
+ | |
| LastOrDefault(IQueryable) |
+ Returns the last element of a sequence, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| OrderBy(IQueryable, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderBy(IQueryable, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| OrderByTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Sorts the elements of a sequence in ascending or descending order according to a key.
+ | |
| Page(IQueryable, Int32, Int32) |
+ Returns the elements as paged.
+ | |
| PageTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged.
+ | |
| PageResult(IQueryable, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ | |
| PageResultTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ | |
| Reverse |
+ Inverts the order of the elements in a sequence.
+ | |
| Select(IQueryable, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| Select(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new form.
+ | |
| Select(IQueryable, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ | |
| Select(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/
+ | |
| SelectTResult(IQueryable, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| SelectTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence into a new class of type TResult.
+ Details see http://solutionizing.net/category/linq/.
+ | |
| SelectMany(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, ParsingConfig, Type, String, Object) |
+ Projects each element of a sequence to an IQueryable and combines the resulting sequences into one sequence.
+ | |
| SelectMany(IQueryable, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectMany(IQueryable, ParsingConfig, String, String, String, String, Object, Object) |
+ Projects each element of a sequence to an IQueryable
+ and invokes a result selector function on each element therein. The resulting
+ values from each intermediate sequence are combined into a single, one-dimensional
+ sequence and returned.
+ | |
| SelectManyTResult(IQueryable, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| SelectManyTResult(IQueryable, ParsingConfig, String, Object) |
+ Projects each element of a sequence to an IQueryableT and combines the resulting sequences into one sequence.
+ | |
| Single(IQueryable) |
+ Returns the only element of a sequence, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| Single(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition, and throws an exception if there
+ is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable) |
+ Returns the only element of a sequence, or a default value if the sequence
+ is empty; this method throws an exception if there is more than one element
+ in the sequence.
+ | |
| SingleOrDefault(IQueryable, LambdaExpression) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| SingleOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the only element of a sequence that satisfies a specified condition or a default value if the sequence
+ is empty; and throws an exception if there is not exactly one element in the sequence.
+ | |
| Skip |
+ Bypasses a specified number of elements in a sequence and then returns the remaining elements.
+ | |
| SkipWhile(IQueryable, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ | |
| SkipWhile(IQueryable, ParsingConfig, String, Object) |
+ Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.
+ | |
| Sum |
+ Computes the sum of a sequence of numeric values.
+ | |
| Take |
+ Returns a specified number of contiguous elements from the start of a sequence.
+ | |
| TakeWhile(IQueryable, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ | |
| TakeWhile(IQueryable, ParsingConfig, String, Object) |
+ Returns elements from a sequence as long as a specified condition is true.
+ | |
| ThenBy(IOrderedQueryable, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenBy(IOrderedQueryable, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| ThenByTSource(IOrderedQueryableTSource, ParsingConfig, String, Object) |
+ Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.
+ | |
| Where(IQueryable, LambdaExpression) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| Where(IQueryable, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, String, Object) |
+ Filters a sequence of values based on a predicate.
+ | |
| WhereTSource(IQueryableTSource, ParsingConfig, String, Object) |
+ Filters a sequence of values based on a predicate.
+ |
DynamicEnumerableAsyncExtensionsToDynamicListAsync Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<List<Object>> ToDynamicListAsync( + this IEnumerable source +)
DynamicQueryableExtensionsPageResult Method |
| + + | Name | Description |
|---|---|---|
| PageResult(IQueryable, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ | |
| PageResultTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged and include the CurrentPage, PageCount, PageSize and RowCount.
+ |
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, String, CancellationToken, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + string predicate, + CancellationToken cancellationToken = null, + params Object[] args +)
DynamicQueryableExtensionsFirst Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object First( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsAny Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static bool Any( + this IQueryable source +)
IQueryable queryable = employees.AsQueryable();
+var result = queryable.Any();EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsReverse Method |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Reverse( + this IQueryable source +)
DynamicQueryableExtensionsTakeWhile Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable TakeWhile( + this IQueryable source, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.TakeWhile("Income > 50"); +var result2 = queryable.TakeWhile("Income > @0", 50);
DynamicQueryableExtensionsFirst Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object First( + this IQueryable source +)
DynamicExpressionParserParseLambda Method (ParsingConfig, Boolean, Type, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + bool createParameterCtor, + Type itType, + Type resultType, + string expression, + params Object[] values +)
DynamicQueryableExtensionsWhere Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Where( + this IQueryable source, + LambdaExpression lambda +)
DynamicQueryableExtensionsThenBy Method (IOrderedQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable ThenBy( + this IOrderedQueryable source, + string ordering, + params Object[] args +)
var result = queryable.OrderBy("LastName"); +var resultSingle = result.OrderBy("NumberProperty"); +var resultSingleDescending = result.OrderBy("NumberProperty DESC"); +var resultMultiple = result.OrderBy("NumberProperty, StringProperty DESC");
DynamicQueryableExtensionsSelectMany Method (IQueryable, ParsingConfig, String, String, String, String, Object, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + ParsingConfig config, + string collectionSelector, + string resultSelector, + string collectionParameterName, + string resultParameterName, + Object[] collectionSelectorArgs = null, + params Object[] resultSelectorArgs +)
// TODODynamicEnumerableAsyncExtensionsToDynamicListAsyncT Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<List<T>> ToDynamicListAsync<T>( + this IEnumerable source +) +
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method |
| + + | Name | Description |
|---|---|---|
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ |
ParsingConfigExpressionPromoter Property |
+ Namespace: + System.Linq.Dynamic.Core
public IExpressionPromoter ExpressionPromoter { get; set; }
DynamicQueryableExtensionsAny Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static bool Any( + this IQueryable source, + LambdaExpression lambda +)
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, CancellationToken) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
IExpressionPromoter Interface |
+ Namespace: + System.Linq.Dynamic.Core.Parser
public interface IExpressionPromoter
The IExpressionPromoter type exposes the following members.
DynamicEnumerableAsyncExtensions Methods |
| + + | Name | Description |
|---|---|---|
| ToDynamicArrayAsync(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsync(IEnumerable, Type) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsyncT(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsync(IEnumerable) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsync(IEnumerable, Type) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsyncT(IEnumerable) |
+ Async creates a list of dynamic objects from an IEnumerable.
+ |
ParsingConfigDefaultEFCore21 Property |
+ Namespace: + System.Linq.Dynamic.Core
EntityFrameworkDynamicQueryableExtensionsLastAsync Method |
| + + | Name | Description |
|---|---|---|
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
DynamicQueryableExtensionsGroupBy Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + ParsingConfig config, + string keySelector, + params Object[] args +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)");
DynamicEnumerableExtensionsToDynamicArray Method (IEnumerable, Type) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object[] ToDynamicArray( + this IEnumerable source, + Type type +)
DynamicQueryableExtensionsCount Method |
| + + | Name | Description |
|---|---|---|
| Count(IQueryable) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, LambdaExpression) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, String, Object) |
+ Returns the number of elements in a sequence.
+ | |
| Count(IQueryable, ParsingConfig, String, Object) |
+ Returns the number of elements in a sequence.
+ |
DynamicQueryableExtensionsSelectMany Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable SelectMany( + this IQueryable source, + string selector, + params Object[] args +)
var roles = users.SelectMany("Roles");
DynamicQueryableExtensionsAny Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static bool Any( + this IQueryable source, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.Any("Income > 50"); +var result2 = queryable.Any("Income > @0", 50); +var result3 = queryable.Select("Roles.Any()");
DynamicQueryableExtensionsFirstOrDefault Method |
| + + | Name | Description |
|---|---|---|
| FirstOrDefault(IQueryable) |
+ Returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefault(IQueryable, LambdaExpression) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ | |
| FirstOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the first element of a sequence that satisfies a specified condition or a default value if no such element is found.
+ |
ParseException Methods |
The ParseException type exposes the following members.
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| GetBaseException | When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions. (Inherited from Exception.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetObjectData | When overridden in a derived class, sets the SerializationInfo with information about the exception. (Inherited from Exception.) | |
| GetType | Gets the runtime type of the current instance. (Inherited from Exception.) | |
| ToString |
+ Creates and returns a string representation of the current exception.
+ (Overrides ExceptionToString.) |
DynamicExpressionParserParseLambda Method (Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + Type resultType, + string expression, + params Object[] values +)
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method |
| + + | Name | Description |
|---|---|---|
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
DynamicEnumerableExtensionsToDynamicArray Method |
| + + | Name | Description |
|---|---|---|
| ToDynamicArray(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayT(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArray(IEnumerable, Type) |
+ Creates an array of dynamic objects from a IEnumerable.
+ |
PagedResultPageSize Property |
+ Namespace: + System.Linq.Dynamic.Core
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsFirst Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object First( + this IQueryable source, + LambdaExpression lambda +)
DynamicEnumerableExtensionsToDynamicArrayT Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static T[] ToDynamicArray<T>( + this IEnumerable source +) +
DynamicQueryableExtensionsFirst Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object First( + this IQueryable source, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastOrDefaultAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicEnumerableAsyncExtensionsToDynamicListAsync Method (IEnumerable, Type) |
+ Namespace: + System.Linq.Dynamic.Core
public static Task<List<Object>> ToDynamicListAsync( + this IEnumerable source, + Type type +)
DynamicClassGetDynamicMemberNames Method |
+ Namespace: + System.Linq.Dynamic.Core
public override IEnumerable<string> GetDynamicMemberNames()
DynamicQueryableExtensionsTake Method |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Take( + this IQueryable source, + int count +)
PagedResult Class |
+ Namespace: + System.Linq.Dynamic.Core
public class PagedResult
The PagedResult type exposes the following members.
| + + | Name | Description |
|---|---|---|
| PagedResult | Initializes a new instance of the PagedResult class |
| + + | Name | Description |
|---|---|---|
| CurrentPage |
+ Gets or sets the current page.
+ | |
| PageCount |
+ Gets or sets the page count.
+ | |
| PageSize |
+ Gets or sets the size of the page.
+ | |
| Queryable |
+ Gets or sets the queryable.
+ | |
| RowCount |
+ Gets or sets the row count.
+ |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicLinqTypeAttribute Constructor |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public DynamicLinqTypeAttribute()
DynamicClassSetDynamicPropertyValue Method (String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public void SetDynamicPropertyValue( + string propertyName, + Object value +)
DynamicQueryableExtensionsSingle Method (IQueryable, LambdaExpression) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Single( + this IQueryable source, + LambdaExpression lambda +)
DynamicQueryableExtensionsJoin Method (IQueryable, ParsingConfig, IEnumerable, String, String, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Join( + this IQueryable outer, + ParsingConfig config, + IEnumerable inner, + string outerKeySelector, + string innerKeySelector, + string resultSelector, + params Object[] args +)
DynamicEnumerableExtensionsToDynamicArray Method (IEnumerable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object[] ToDynamicArray( + this IEnumerable source +)
EntityFrameworkDynamicQueryableExtensionsCountAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + EntityFramework.DynamicLinq
public static Task<int> CountAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
EntityFrameworkDynamicQueryableExtensionsLastOrDefaultAsync Method |
| + + | Name | Description |
|---|---|---|
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
GroupResultKey Property |
+ Namespace: + System.Linq.Dynamic.Core
System.Linq.Dynamic.Core Namespace |
| + + | Class | Description |
|---|---|---|
| DynamicClass |
+ Provides a base class for dynamic objects.
+
+ In addition to the methods defined here, the following items are added using reflection:
+ - default constructor
+ - constructor with all the properties as parameters (if not linq-to-entities)
+ - all properties (also with getter and setters)
+ - ToString() method
+ - Equals() method
+ - GetHashCode() method
+ | |
| DynamicClassFactory |
+ A factory to create dynamic classes, based on http://stackoverflow.com/questions/29413942/c-sharp-anonymous-object-with-properties-from-dictionary.
+ | |
| DynamicEnumerableAsyncExtensions |
+ Define async extensions on IEnumerable.
+ | |
| DynamicEnumerableExtensions |
+ Define extensions on IEnumerable.
+ | |
| DynamicExpressionParser |
+ Helper class to convert an expression into an LambdaExpression
+ | |
| DynamicProperty |
+ DynamicProperty
+ | |
| DynamicQueryableExtensions |
+ Provides a set of static (Shared in Visual Basic) methods for querying data structures that implement IQueryable.
+ It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated,
+ or when downstream components only return column names to sort and filter by.
+ | |
| ExtensibilityPoint |
+ Extensibility point: If you want to modify expanded queries before executing them
+ set your own functionality to override empty QueryOptimizer
+ | |
| GroupResult |
+ The result of a call to a DynamicQueryableExtensions.GroupByMany() overload.
+ | |
| PagedResult |
+ PagedResult
+ | |
| PagedResultTSource |
+ PagedResult{TSource}
+ | |
| ParsingConfig |
+ Configuration class for System.Linq.Dynamic.Core.
+ |
| + + | Interface | Description |
|---|---|---|
| IAssemblyHelper |
+ IAssemblyHelper interface which is used to retrieve assemblies that have been loaded into the execution context of this application domain.
+ |
DynamicClassGetDynamicPropertyValueT Method (String) |
+ Namespace: + System.Linq.Dynamic.Core
public T GetDynamicPropertyValue<T>( + string propertyName +) +
DynamicQueryableExtensionsSingleOrDefault Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object SingleOrDefault( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsOrderByTSource Method (IQueryableTSource, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IOrderedQueryable<TSource> OrderBy<TSource>( + this IQueryable<TSource> source, + ParsingConfig config, + string ordering, + params Object[] args +) +
var resultSingle = queryable.OrderBy<User>("NumberProperty"); +var resultSingleDescending = queryable.OrderBy<User>("NumberProperty DESC"); +var resultMultiple = queryable.OrderBy<User>("NumberProperty, StringProperty");
DynamicQueryableExtensionsPage Method |
| + + | Name | Description |
|---|---|---|
| Page(IQueryable, Int32, Int32) |
+ Returns the elements as paged.
+ | |
| PageTSource(IQueryableTSource, Int32, Int32) |
+ Returns the elements as paged.
+ |
DynamicQueryableExtensionsTakeWhile Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable TakeWhile( + this IQueryable source, + ParsingConfig config, + string predicate, + params Object[] args +)
IQueryable queryable = employees.AsQueryable(); +var result1 = queryable.TakeWhile("Income > 50"); +var result2 = queryable.TakeWhile("Income > @0", 50);
DynamicQueryableExtensionsDefaultIfEmpty Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable DefaultIfEmpty( + this IQueryable source +)
IQueryable queryable = employees.DefaultIfEmpty();
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<bool> AnyAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicQueryableExtensionsGroupBy Method (IQueryable, String, String) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + string keySelector, + string resultSelector +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)");
DynamicClass Class |
+ Namespace: + System.Linq.Dynamic.Core
public abstract class DynamicClass : DynamicObject
The DynamicClass type exposes the following members.
| + + | Name | Description |
|---|---|---|
| DynamicClass | Initializes a new instance of the DynamicClass class |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetDynamicMemberNames |
+ Returns the enumeration of all dynamic member names.
+ (Overrides DynamicObjectGetDynamicMemberNames.) | |
| GetDynamicPropertyValue(String) |
+ Gets the dynamic property value by name.
+ | |
| GetDynamicPropertyValueT(String) |
+ Gets the dynamic property by name.
+ | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetMetaObject | Provides a DynamicMetaObject that dispatches to the dynamic virtual methods. The object can be encapsulated inside another DynamicMetaObject to provide custom behavior for individual actions. This method supports the Dynamic Language Runtime infrastructure for language implementers and it is not intended to be used directly from your code. (Inherited from DynamicObject.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| SetDynamicPropertyValue(String, Object) |
+ Sets the dynamic property value by name.
+ | |
| SetDynamicPropertyValueT(String, T) |
+ Sets the dynamic property value by name.
+ | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) | |
| TryBinaryOperation | Provides implementation for binary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as addition and multiplication. (Inherited from DynamicObject.) | |
| TryConvert | Provides implementation for type conversion operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that convert an object from one type to another. (Inherited from DynamicObject.) | |
| TryCreateInstance | Provides the implementation for operations that initialize a new instance of a dynamic object. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryDeleteIndex | Provides the implementation for operations that delete an object by index. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryDeleteMember | Provides the implementation for operations that delete an object member. This method is not intended for use in C# or Visual Basic. (Inherited from DynamicObject.) | |
| TryGetIndex | Provides the implementation for operations that get a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for indexing operations. (Inherited from DynamicObject.) | |
| TryGetMember |
+ Provides the implementation for operations that get member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as getting a value for a property.
+ (Overrides DynamicObjectTryGetMember(GetMemberBinder, Object).) | |
| TryInvoke | Provides the implementation for operations that invoke an object. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as invoking an object or a delegate. (Inherited from DynamicObject.) | |
| TryInvokeMember | Provides the implementation for operations that invoke a member. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as calling a method. (Inherited from DynamicObject.) | |
| TrySetIndex | Provides the implementation for operations that set a value by index. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations that access objects by a specified index. (Inherited from DynamicObject.) | |
| TrySetMember |
+ Provides the implementation for operations that set member values. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as setting a value for a property.
+ (Overrides DynamicObjectTrySetMember(SetMemberBinder, Object).) | |
| TryUnaryOperation | Provides implementation for unary operations. Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as negation, increment, or decrement. (Inherited from DynamicObject.) |
IExpressionPromoter Methods |
The IExpressionPromoter type exposes the following members.
DynamicExpressionParserParseLambda Method (ParsingConfig, Type, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + Type itType, + Type resultType, + string expression, + params Object[] values +)
DynamicProperty Class |
+ Namespace: + System.Linq.Dynamic.Core
public class DynamicProperty
The DynamicProperty type exposes the following members.
| + + | Name | Description |
|---|---|---|
| DynamicProperty |
+ Initializes a new instance of the DynamicProperty class.
+ |
| + + | Name | Description |
|---|---|---|
| Name |
+ Gets the name from the property.
+ | |
| Type |
+ Gets the type from the property.
+ |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
ExtensibilityPoint Class |
+ Namespace: + System.Linq.Dynamic.Core
public class ExtensibilityPoint
The ExtensibilityPoint type exposes the following members.
| + + | Name | Description |
|---|---|---|
| ExtensibilityPoint | Initializes a new instance of the ExtensibilityPoint class |
| + + | Name | Description |
|---|---|---|
| Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
| Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
| GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
| + + | Name | Description |
|---|---|---|
| QueryOptimizer |
+ Place to optimize your queries. Example: Add a reference to Nuget package Linq.Expression.Optimizer
+ and in your program initializers set Extensibility.QueryOptimizer = ExpressionOptimizer.visit;
+ |
ParsingConfigAreContextKeywordsEnabled Property |
+ Namespace: + System.Linq.Dynamic.Core
DynamicQueryableExtensionsSelectTResult Method (IQueryable, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TResult> Select<TResult>( + this IQueryable source, + string selector, + params Object[] args +) +
var users = queryable.Select<User>("new (Username, Pwd as Password)");
DynamicQueryableExtensionsSkip Method |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Skip( + this IQueryable source, + int count +)
DynamicQueryableExtensionsLast Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Last( + this IQueryable source +)
DynamicQueryableExtensionsGroupBy Method (IQueryable, ParsingConfig, String, String) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable GroupBy( + this IQueryable source, + ParsingConfig config, + string keySelector, + string resultSelector +)
var groupResult1 = queryable.GroupBy("NumberPropertyAsKey", "StringProperty"); +var groupResult2 = queryable.GroupBy("new (NumberPropertyAsKey, StringPropertyAsKey)", "new (StringProperty1, StringProperty2)");
System.Linq.Dynamic.Core.Parser Namespace |
[Missing <summary> documentation for "N:System.Linq.Dynamic.Core.Parser"]
| + + | Class | Description |
|---|---|---|
| ExpressionParser |
+ ExpressionParser
+ |
| + + | Interface | Description |
|---|---|---|
| IExpressionPromoter |
+ Expression promoter is used to promote object or value types
+ to their destination type when an automatic promotion is available
+ such as: int to int?
+ |
EntityFrameworkDynamicQueryableExtensionsLastAsync Method (IQueryable, CancellationToken, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> LastAsync( + this IQueryable source, + CancellationToken cancellationToken, + string predicate, + params Object[] args +)
DynamicExpressionParserParseLambda Method (ParsingConfig, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static LambdaExpression ParseLambda( + ParsingConfig parsingConfig, + Type resultType, + string expression, + params Object[] values +)
EntityFrameworkDynamicQueryableExtensions Class |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static class EntityFrameworkDynamicQueryableExtensions
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| CountAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the number of elements in a sequence.
+ | |
| CountAsync(IQueryable, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| CountAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the number of elements in a sequence that satisfy a condition.
+ | |
| FirstAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence.
+ | |
| FirstAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the first element of a sequence, or a default value if the sequence contains no elements.
+ | |
| FirstOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| FirstOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the first element of a sequence that satisfies a specified condition
+ or a default value if no such element is found.
+ | |
| LastAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken) |
+ Asynchronously returns the last element of a sequence, or a default value if the sequence contains no elements. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ | |
| LastOrDefaultAsync(IQueryable, CancellationToken, String, Object) |
+ Asynchronously returns the last element of a sequence that satisfies a specified condition
+ or a default value if no such element is found. [Maybe not supported : https://msdn.microsoft.com/en-us/library/bb738550.aspx]
+ |
IDynamicLinkCustomTypeProvider Interface |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public interface IDynamicLinkCustomTypeProvider
The IDynamicLinkCustomTypeProvider type exposes the following members.
| + + | Name | Description |
|---|---|---|
| GetCustomTypes |
+ Returns a list of custom types that System.Linq.Dynamic.Core will understand.
+ | |
| ResolveType |
+ Resolve any type which is registered in the current application domain.
+ |
DynamicQueryableExtensionsSelect Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Select( + this IQueryable source, + ParsingConfig config, + string selector, + params Object[] args +)
var singleField = queryable.Select("StringProperty"); +var dynamicObject = queryable.Select("new (StringProperty1, StringProperty2 as OtherStringPropertyName)");
DynamicQueryableExtensionsLastOrDefault Method |
| + + | Name | Description |
|---|---|---|
| LastOrDefault(IQueryable) |
+ Returns the last element of a sequence, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, LambdaExpression) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ | |
| LastOrDefault(IQueryable, ParsingConfig, String, Object) |
+ Returns the last element of a sequence that satisfies a specified condition, or a default value if the sequence contains no elements.
+ |
EntityFrameworkDynamicQueryableExtensionsAnyAsync Method |
| + + | Name | Description |
|---|---|---|
| AnyAsync(IQueryable, CancellationToken) |
+ Asynchronously determines whether a sequence contains any elements.
+ | |
| AnyAsync(IQueryable, String, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ | |
| AnyAsync(IQueryable, String, CancellationToken, Object) |
+ Asynchronously determines whether any element of a sequence satisfies a condition.
+ |
EntityFrameworkDynamicQueryableExtensionsFirstAsync Method (IQueryable, String, Object) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstAsync( + this IQueryable source, + string predicate, + params Object[] args +)
DynamicExpressionParserParseLambdaTResult Method (ParsingConfig, Boolean, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static Expression<Func<TResult>> ParseLambda<TResult>( + ParsingConfig parsingConfig, + bool createParameterCtor, + string expression, + params Object[] values +) +
EntityFrameworkDynamicQueryableExtensionsFirstOrDefaultAsync Method (IQueryable, CancellationToken) |
+ Namespace: + Microsoft.EntityFrameworkCore.DynamicLinq
public static Task<Object> FirstOrDefaultAsync( + this IQueryable source, + CancellationToken cancellationToken = null +)
DynamicQueryableExtensionsSelectManyTResult Method (IQueryable, ParsingConfig, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable<TResult> SelectMany<TResult>( + this IQueryable source, + ParsingConfig config, + string selector, + params Object[] args +) +
var permissions = users.SelectMany<Permission>("Roles.SelectMany(Permissions)");
DynamicLinqTypeAttribute Class |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public sealed class DynamicLinqTypeAttribute : Attribute
The DynamicLinqTypeAttribute type exposes the following members.
| + + | Name | Description |
|---|---|---|
| DynamicLinqTypeAttribute | Initializes a new instance of the DynamicLinqTypeAttribute class |
| + + | Name | Description |
|---|---|---|
| TypeId | When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute.) |
| + + | Name | Description |
|---|---|---|
| Equals | Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.) | |
| GetHashCode | Returns the hash code for this instance. (Inherited from Attribute.) | |
| GetType | Gets the Type of the current instance. (Inherited from Object.) | |
| IsDefaultAttribute | When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute.) | |
| Match | When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.) | |
| ToString | Returns a string that represents the current object. (Inherited from Object.) |
DynamicEnumerableAsyncExtensionsToDynamicListAsync Method |
| + + | Name | Description |
|---|---|---|
| ToDynamicListAsync(IEnumerable) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsyncT(IEnumerable) |
+ Async creates a list of dynamic objects from an IEnumerable.
+ | |
| ToDynamicListAsync(IEnumerable, Type) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ |
Microsoft.EntityFrameworkCore.DynamicLinq Namespace |
| + + | Class | Description |
|---|---|---|
| DynamicFunctions |
+ DynamicFunctions (EF.Functions)
+ | |
| EntityFrameworkDynamicQueryableExtensions |
+ Provides a set of static Async methods for querying data structures that implement IQueryable.
+ It allows dynamic string based querying. Very handy when, at compile time, you don't know the type of queries that will be generated,
+ or when downstream components only return column names to sort and filter by.
+ |
DynamicQueryableExtensionsGroupByManyTElement Method (IEnumerableTElement, FuncTElement, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IEnumerable<GroupResult> GroupByMany<TElement>( + this IEnumerable<TElement> source, + params Func<TElement, Object>[] keySelectors +) +
DynamicQueryableExtensionsDefaultIfEmpty Method (IQueryable, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable DefaultIfEmpty( + this IQueryable source, + Object defaultValue +)
IQueryable queryable = employees.DefaultIfEmpty(new Employee());DefaultDynamicLinqCustomTypeProviderResolveType Method (String) |
+ Namespace: + System.Linq.Dynamic.Core.CustomTypeProviders
public Type ResolveType( + string typeName +)
DynamicEnumerableAsyncExtensions Class |
+ Namespace: + System.Linq.Dynamic.Core
public static class DynamicEnumerableAsyncExtensions
| + + | Name | Description |
|---|---|---|
| ToDynamicArrayAsync(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsync(IEnumerable, Type) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayAsyncT(IEnumerable) |
+ Async creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsync(IEnumerable) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsync(IEnumerable, Type) |
+ Async creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListAsyncT(IEnumerable) |
+ Async creates a list of dynamic objects from an IEnumerable.
+ |
IAssemblyHelper Interface |
+ Namespace: + System.Linq.Dynamic.Core
public interface IAssemblyHelper
The IAssemblyHelper type exposes the following members.
| + + | Name | Description |
|---|---|---|
| GetAssemblies |
+ Gets the assemblies that have been loaded into the execution context of this application domain.
+ |
PagedResultTSource Properties |
The PagedResultTSource generic type exposes the following members.
| + + | Name | Description |
|---|---|---|
| CurrentPage |
+ Gets or sets the current page.
+ (Inherited from PagedResult.) | |
| PageCount |
+ Gets or sets the page count.
+ (Inherited from PagedResult.) | |
| PageSize |
+ Gets or sets the size of the page.
+ (Inherited from PagedResult.) | |
| Queryable |
+ Gets or sets the queryable.
+ | |
| RowCount |
+ Gets or sets the row count.
+ (Inherited from PagedResult.) |
DynamicQueryableExtensionsFirstOrDefault Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object FirstOrDefault( + this IQueryable source +)
DynamicQueryableExtensionsSelect Method (IQueryable, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Select( + this IQueryable source, + Type resultType, + string selector, + params Object[] args +)
var users = queryable.Select(typeof(User), "new (Username, Pwd as Password)");
DynamicClassGetDynamicPropertyValue Method (String) |
+ Namespace: + System.Linq.Dynamic.Core
public Object GetDynamicPropertyValue( + string propertyName +)
DynamicQueryableExtensionsSingleOrDefault Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object SingleOrDefault( + this IQueryable source +)
DynamicEnumerableExtensions Methods |
| + + | Name | Description |
|---|---|---|
| ToDynamicArray(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArray(IEnumerable, Type) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicArrayT(IEnumerable) |
+ Creates an array of dynamic objects from a IEnumerable.
+ | |
| ToDynamicList(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicList(IEnumerable, Type) |
+ Creates a list of dynamic objects from a IEnumerable.
+ | |
| ToDynamicListT(IEnumerable) |
+ Creates a list of dynamic objects from a IEnumerable.
+ |
DynamicQueryableExtensionsSelect Method (IQueryable, ParsingConfig, Type, String, Object) |
+ Namespace: + System.Linq.Dynamic.Core
public static IQueryable Select( + this IQueryable source, + ParsingConfig config, + Type resultType, + string selector, + params Object[] args +)
var users = queryable.Select(typeof(User), "new (Username, Pwd as Password)");
PagedResultTSource Constructor |
+ Namespace: + System.Linq.Dynamic.Core
public PagedResult()
DynamicQueryableExtensionsSingle Method (IQueryable) |
+ Namespace: + System.Linq.Dynamic.Core
public static Object Single( + this IQueryable source +)
ParsingConfigEvaluateGroupByAtDatabase Property |
+ Namespace: + System.Linq.Dynamic.Core
$_p%X3$}lctf$1e_tdtFSo(X!1 zj|_I;CBX5%PngDb*+_97zyA+YP%!?eXj+q%Ee-&qUg8}4anfkrCqNp@UF-)xVt#KL zWCuLULo`^L->-Ik$+U<%-e2rG*uK9D7PXkq3r-VUO~d}gN5m2Kj{TR3(tGir&I1QO z`_WKH`Mfx%|AhXdSmRy+;u;FCP=1@UkCnC608RfYl{`Rt)3w5YOR(;;zl2_~>gM z&SON8S2B8GJl?b6jc1NvHNWpLJc=_Rdj^up-)$-W&so_Xe-4eOV87-%_T*CAK3tt*ueR4HqgQVpYC+cVEfe)JCo=~@Fp4DTh0Q{p&|4@J9uq<_ zlri{YIAh?^=Rsh>Wjf};yqG8R=5eeiz*ge&*S_#y`@(|s?ED_;_nyzwU930F+PMR(x9~dru}CZtchYt(`bXChH?klF63s+SEg^ zvsxj;n1VT(Og8tCUOoJ69Ax&gS$_TTf1)_IhyU})mU&r?kl{tw=X>}|8(y-JHjD7Q zyKfKwd6>FkTzgLJZ$Az*N`LY7{!47VWXr_0ve&qS_uuS1DL{Ny3>fIz`(c#tFMjgj zu)cv0zd3n~=+7!(#&-aV@q0wmBVOPQ#?oF=E@KG2{E?(PLEl>t3NecaMVIT3E|=k6 zNy-OaDDVq$wnsm~bpFN`1g`=_Y36{N|L;;-=;g}vxVpULjvrNSQei@9$hlMhjyb9_ z6Y2{y8p}%>RW*%`4GoQrb@dHu=~J&(H`Y`%+{&-bO_E}{ir>3qRA60#QL%q7Oq6F&v@ggcS;x$#b8a0|ab$yMxzBE5K z{-;wRAFsZ#abDQEx1v6JKjFZt^s~nb6cH5_6(|L0+Q!EEqO3nsgeoUdt5&fo8a0(= zx6{ua4PEv6^?5Ia% E)%7Am8ISdlt)qgLB^TY3K? zAh}Lm!;&{@Ze=CM_`3wp9dKjbOW|%q!@OUKJoB&WT9u}zB4xKnn9HEh`GbSs?;q?o zBKfO5l@;YGwOXUqH56yxtBAa)YufT6txi|3(-+HchA(#xnL8kS!SE=L5pfHK1g(AN zW<;c3--Jbg%D8LM9>efHV!?<|*C9c32gnbus;;b1*Vlu*E EvphFF zVuf?4?4?ML5iy=4 RU?tcK-s4cpu{+@kuhE)qdkU)xep7P^I}rK z##$A8p;22~nHLj$M-jJ@B6PJCT78pRU8mUX9V#0b Ek^z-g8*&4v&hM zU-M5Nh+i~1!E< wYCwPyLFL*i5ZBU%+OYt5<6TC-CpHcDNqo7E%=Ll3sl;4c1+a(Pe zjkcz|AU?FMh`Nl}##?z!%`J_MjY)gF!sic)^R|;O8ZBQW@dqof5pfIc;*V~u2t8LB zdM0(_toQ{(%tc5F#(9l`F>lBQ 8ca(pm z+-rE$qOsS%2~=zKrXsRFMiGO!h=rqotXMn-E)fI%nerxsQCD><`tsQ}{zhXfs7k-z zld^1V`l<=3D;yF#^9LWf=g`PSV v4He>+I@IQ- zz|^|xcK)!xv4u&huYQrWdVG%Gq>NSLVImN=8QF9r_Z$+r*giSYuu|w9PVOE;bybE6*H}lU<&{yAP z>}Fl{ryk{7XO?W5p0#>H;>rn$2Uq2M_et5+uhTw)&kr^g5$7?iNFK)QVbY(ECM_J9 zv3h*g2TmzV$J{!*pWhmd@EH?x{IAQ1ZY<8`_poa0dG)ThYWKcZvhlSPzt>{JLeyIB z)2hPG!{^a* SQJfhlX>NZ$NzY4lZ7L#U~# z&O5NAz|W~<^Nhl^ld8_{We!BzilWG0zH5^oH|5EZ+VVnEE|sLv*DL7jRn14;3-`Lp zqr%a&O<4wwx<#)w-D_J~OX5OqZ+okH=j^I&Gpi4Kw`yvUWi%M>I$TOBuqikdh0|q! zy0nE(t+@Twrc6bAExN6y7F|oLuEl`n1EW=BC96;R>JQCtKJ2DF;%+QXF_G#jisP=B zJ-?$0%BZUiMVTfX{$G_wNhc}(I9=bRySS&~#+m%6kj&^%d +K0Yb zN#{3FxtY+Q(^O~4JF@L~UzrxuZY309s3BDpRa~O{? W7Ha_>csZ5J)D9nJSZM2pf^db15?c&4zNn6s_mfy8b?^Q~E#BX(ZN$6t@ z`o=aUzrQgWTF{rGt1nKtc`sJ?d0(C!p~_8cC`^YxH`mvq)qo*B2A#I4wnB3&A2OGv zM&F0S1GCf_F%5YNb&ec;6zZ=1ldDi?#;G%7AIJd+ZHkBDI0R0X@SX$q9te97n+vfI z5o+Gs@W=iH&@sbkgM007wBayKs0n%(f*12--fjCD{*T?Uukke4|6fQ;T;BWni{rTo z5oI}PWx464nThi27Z3Qaw;ws=4@$GrLspO+YidpCd>WfuwFc6*7@H07RU=&V!q=bK z4d%tK`y}9?lSYT8(&!6vvf?j(pYYw`w6n)@uAV7MiLb1#uGclAzEq|8Zg0PNFFtv( zp}=WqGL#o9lfT>@vV2m|+?Q@Hb&B5bcJRDGAq(tcwz=nqUPSQU)M_+p>Y)4YSxJ&m zgTAFWF*4Hc&5$|$!siXRvD`U1>Sj}ObN=_AgyHf17lUPk6(=@TR#fO)je1q(#Id6~ zvRdQqil(YH7)ui)!xlT-oHqcWAO^A^zu9RyJkFNIUW;8YG{$2%V)&r<`pQ4`t*Na= zZ=M|&*2X6<=$tA)wb@8DWu?(;XNJiJ#&YmEO71-(+S@Me`-2F`6F0tvu^0g@f{;k} zVZn1=%s6wTK@VHC`Yl>uVx>z9Z`IW6jg)idFoXvaxhaB`B22|nha{g@<>r`;V`H!i zcO4wIbbNVUCaN$q`i6;5V`i+O)!3k_j$b!3+I@&QQkBB^s3nfsVON@}O7f1aj-4;X zcv66hP(1Yg{#j>_qV(q4vhjAqz)Dw=1x>3`V`97!p4lPDk#kIrKxkORB8QA5IqY-$ zVqna?z6gN%J+rclnE#Suw^yS^i;>L7Lk2!ARV8f6n?J>Q4M&&+KBhPUVP~wz(6FzM z=nQ12ugTi$5i5nA9B?ik9fK(S!&wa~9uqhCEMY!U5K?*LOya^(sVf{4m$dO=k-`@{ zCS3g)VHUc?tUU`5`^guLLdX>FHA1m|W}}KD&y7Ay!Kb;h829S FIGFQKvylgDX z0~L7EF;c!@Fj!?phXALkraWcsv;@y#$xFv_ |OZ z>!+k6f #8e(R(k$0IH#_3Oj MV<|cN#g0lzn zR*x%K>s-9g-9(jm<5w_2QpNwKE6xHHx&?|nMPDq|9h{f(`PTB9I)10u=*kM<7)VvO zOG^)WS8bhMxqVhscC_@)uyEcxCO*tce%;WZ;`c^9CI3KIx3+x$LCK|)w+oaNRkam0 z>Z%%5ZBcIh`F+iYU0RO08xmL}r1XgEZA?rz+MEPq3->K7RdoU>&yf6RQ`m9UjW4Q# zKC24~G+f$2Kdqzd`=}&ILL+r~@f}P|k4 L_ XLvpCTBn#XuYPPd9>NQa2^49?m zWMXEO7T%a1uFX%>6{WRQ6}MEEHkT>2c?wN>Bq{G1o}oM^qd-o2VS*F(L!7WL;)MMX zCw~Br3YbB}^ ;UWs90QyHd=B`+44>h89B>e@6R;kz2=Erb9?%c)B;bES50iwWMvRCyg1j^(xY0Jkeo1(v{{A<5#CfwFG^AybOHK0a%xR0X_z> zpK*P%>;E0Vb^X5p{}nx$hH1Gzp9Q?~h|R-pDZia5l4QP>M>>|Zv4OBuMGXxNR9|0D zSP_z-uCA`_p5JjE<7t4eQ$wfQN=cX0tLM}`yLbBq{J#gV&us&^1Gp}p2Rs5`zx}g1 zu c!hHh?IKw%r_Q20mhQ`BY|#qC~1$)E3_?5jUeacTmUm))k0daxbX z_q19q>Ct}bvlCipPkl8K<(~!|0k94e0nY)rJ+OTDN}R|2%#+`Iym<}kwY90SUgFJV zbhLR{aRFst|B)hgEv6tZdkS(LM#1xkn!t4^g_yzeF35E_g)DTSxQ~}n_O&x~yHF|V z&vszH;yPuY)T6w{+(hI1( Oq1c_C6vXnH<-FlGj6wl7y~k4A{#BIvw$e~AHWsB;~meN@75M9e)B?oR)VgnQ4OEbNj}qN_sR-N z`*uHtE^?G)vB(_eKAf;QL19bAQ^fZHl$n_+(Q+SJ@XKcu;W2{3fpgQ{q@zWTV9zmF zcG^N^h53>{cG3a$z`pcQ7wexO?^ghSz)XNG;BJ1zWB20~iJ=8ewdJJO>m^&TO}Ku` z3vx()zz1> N|ki5_>!qTR8c|XZ(7K877z&Fw!mZc6M#EojfXRSJ$(SdxUspp zN%9*@KU1#ErnqhMO>(1LE+5-HlH6EFC+wRLHa6(OzV&qN+BHdEgTX+pt*sI$PalwQ zu {>Di_S`&@^*h($eMl|ky?ENy}7595yUQ5&0|A@4~5kI`HQ9D{KkNU1dP%K4`9 z0^&MvYqOY-W_-JkLQ#ffbJz`AS;XaIJ}$|O`5##zYK1dhJ#}0vpY5;0xRw3$Ny0=K zI3p#Hbih5=8T%a9MY|5eur#`vs;ercI^=$X>!7Ln7RCMYO$`L)I@kr^7=z IRv2X0f7WH
?R#d`f{DI&v89=)FIS!G%0WV+_?@g_HfMd?BAcf2w{%_yaC)7bpr_M#E@ p!K`a5-q+wMkHrNxpTTIvA5 zA3>K+etHYyehF9y;Q0o(V?mQ0UuI~mlYGb0XWohnq6p7Xush2>s)Ouygq0qX4tL59 zed3pmqa@$Sl=Q)5N?tRSu &fLZ=KZI9 AUC%GPr$(X zl(27_5fgKHY=8EjvgqFkd&BLrFCIhK(j;u--rIK|f8@$Zbp5B(QoLc5Hc^Qh^OFht ziucrk>(b MtUpL*gzEsV=3M z4t8zPVNA`6H$d($0c!vwb@@q6mh~;RR}17%-@SkmmW(CEGJ8q_U c{A^*```Llfcx z#HEm%?eA-rzu6+cR0oKevDHqA%N;0rg(Kkr0Aa_Pu!W8`!2W-K`B{f+o80Ky#a|@f zwfGV9u9XK-vfpc+b+E_}-rUCIfH>&D{YK)Jxztd@b0?kT7p+*5L?1+uo9Fu+%MC-{ z*-3tCZK0fxJt<}7cuMn`02ohLzeXLvhyI}atiyGG4+;wjYHQ1u{-{ Y%yHDyvAvedOivfe-KibwN^ENdb38~=73QAw? zM47%50ZxR)Zq$Lj)CT^D{UyJK4#8X8Ngf*`*^leN(jKZKFOVFvGM-8P(UR;*uo3&K z9KIV59a49?Vb0xXvORp;h%pNO(+ar{16%?9u~J-STGBSj&i^ZZ*hATVlPPB{z;6;| zL5H-JjwT=Cc7}5QD1_`-O!-;qQr~8gAA=1kKU?1>Ki4ZZ4J1EJhOZ_rbCB9!)*&B> zj&0AW6)U^EJ_fmYKK3@iR+AZ%WKdU0`Idj0$R8>H!`Dc;;dN5tiW44`v1$UPz&3xz zhge7MlR}Sd{#{$BOO1q__LA>#-@x^Y4GRF`5BRGBIuxBfAoal(xeN`pR2X@+0dj8v zOaVOIkaF`g(;kZj3)e~|6>t3~;UooMIu$~XoHfp-I*|IIKUW7azOPYHMzYjDTk3%4 zcIsC69;v;ht$LL*H@{6rX@kcs5$LdEKzsa_ z-h|w4fPsKVRk4@5>7_o%a$LlWpYj{k?43ikfa=}v(CsZVNx6P1Wx_sjyS+&+my=Sd zl*UG;;5kOJ-|Kg67x62ds0h2smN89=Q?T}!eP9XtHV4AKnpD5JXm8o !0SN|0R(M!oD@TJBEW<0Pn3VT}TBz%C@o&Q%JGt zT?)H)MOsVaxJpVm)P?=YyUL$@bS D92i1QvkIJ{r zlG^souMSD;3>JUpats*XZ~c6Xunj52tN0B*N;~RD)rGl|?=TMQz;oM@gqxJJ9{mIC zQT)*xQd=wDG@S}IPNUijhZ(g!vG0^-)8Wk@T!q}c{>|&UJa=rHzw4Dr4ctHdE?ves zsIOKMeYt|@vqhvueN^q7O)2{pQ|OHlDOT=GW5hanF4d+)P)&9s)~D+wf4AVU@9=tQ z(T|6yXyfaWUs~GPZS)!ChrHp8ys_Dya1@Oia^)QN@Vs$2pw0HUmr`xQHIJrSxxcRi z-k!suB|7&Z(V2C`$Cz3Jyhy$8eM 4^4bFRFE{p|Otg6OxML{|Zq zw?Ur`M5la6dtxc2|MEF06bfnGhTG@865GA3tc)shQmFQ;52^8h3+a!zOMa<4>`n~_ z=MyQ+8?qgkw8AG<=`lLU$m7+E0G_kobsf4Y=JF_gVOlHB*LC1vxy8n56#O#!C{e_x zL_zSYUp5nczmCc;22fU9gtT^^o}Nyrsi_k1T6#uC2Ib`BP*H)BYT~a^)AykHY%$Rn z%i)*sNxt%P(nU)_?N{^(`l58>p^sJ{hs;9(j|1*pcf+gp)R-D}u(_h>E`DTYn|ltY zFTTa5^(olvBvIrcqHDWRFMCNJ^tm(^ltf&nLWb~5R2p%SYD3RZ>!tlfr`HgjU61 Kc9++bfW=J0=U2Yo!{VHr=-h{leg4$jww2@Mf*y{5sk|@ z&~XX=`ZH1P4}=A0qPPH}u!E+$VPE@o2mB6jZI|g?$UdSQpAdz7Y|=UYYp}h$&vC3! zF27L;!Fb)g7vK-cZc#*+rzkL=Cg>!3=Z8!T5|KE-iUX+X5FAnXjp!D9xZp?Vbebp& z^^^e_xvo;bB1-;(Nd6g78uT@mb!OG!iG98yJAr-P&MbSUzS1J&gRc7g#G)2e1
BRO9bAb-pD-O-GiS&U5&N>1kKx1otz-wANHAh z>7vbvi*7D2H2(ga!aW4|FTUnJqq(ZYSebaU0J8K2a39|V@IZeD&V3Ww^j E+wON!gAWP0=nImH^~D*j+`qMI>!o=qD&`IW z?|6irS!ZsW&4^WT9;+4W`ju&yzvXz0$0U}U$EE)fxxu$ns!O %~_d&$$n1DpMNy#E-r(wGMP=5i?Hd#PI*(gIa!VGUjpXwK=g@ zrMf9hsh0HOYe8}e`halcZ>(1Y&A@zv_ul^75+Cf9ejhCq6^GwHBY&{wE0-|A{5x{J z+poNM$G^)4G7y@7j}5;ESIEz}hVoT3Uxf!>{TUy4{(Qkzy8Iu!`b!12mmkW{7Wr{4 z P=V|z(<+uXs9p=P^U>?|F2Mn3s>wfx>(PmtOI{=_*gj-$o{ zcpc_vz{L*mBks2Wcz?$RaA$f(Hv7$uMe>Mx{t7}P&fYYZ I0smEE3WeZ#spgRKK zn49|stEAwIKWK0sv=LoP;t7BHb^23u)zgu(e>y>-bNbNLcl%QMPhXG@`TQl7*>6mV z0UfW^{NsxQJ4e(*K0WfHKbk|=CwHT$H=m%eZ;nbGRrVq5)lYkjew+L#DZrcY@P$mS z4n9NRjqj)w@xE@>>4OyfT6dB!7(#NlffT>gp0f5YqPY13DPh52igg)CSEu%*!q{NK zSJUX|F8>_R|Er-8WkcsktZT=~UL?grtnJL}Lvec+6OL#~Yg=)1`w+fBMB%faqv&grlpJF!w(xY$sx8r1Bp>r3lE+GQ_(MAbjzS z@O@6!fnDpD`l4)V$ciKRynj$4(|Zmj9C@XPcY5Qe))8wV6`uT%qGvw~y#`Sf^wFqm zsIDNL>3>v1{+62Cl)GdEr7pt$>HGl{JLf+s_U&ir<{LdRZHkh3Bw@`|KG#;-GcaI2 zqf(|a{Smb?P0H5 `d595WA zvZI33pntnAC-Ek}42rd>T%x_0H}8@Wq5+IOtyFgPE8+;Op~*;vs~zdKj~yOrsj;k( zwyark1@yfEf<*?ZP!L`4q3WM@QFU tb58!kIVT*mdLS^KKk!3ASNGUCr~eI_expJF literal 0 HcmV?d00001 diff --git a/docs/icons/privclass.gif b/docs/icons/privclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0939694ce08ad44508f6f017b68e46f0f22377b9 GIT binary patch literal 621 zcmZ?wbhEHb6krfwc;?UW|NsB|hUt&r{rL9oM)d3(_aDFd`{wV%RU+Tt-(Iu*bdPSY zqjyAO5)Xs%%*W4OT}r)t^1|KQ1$X{_`1|40mlNl1p1OGN*V KPj>%-QMrvo Z0aqv=U>zv((uk1Z`&AIsGhXbbm$u+t4({AM4 zoUwe*+pV&@k6t-)=GK>oZB< oaqPkBNogHUHno4%^Ngbh!J5dZ96zXj&rOBmSr#rWBn`?Qta4AyNBlN99gXZF;U z(BWY`VYPQZo4>HAqB^H51EW8i _+6gJ+{k9ar8DD%q6<$7gRGgrgar((tRfl{0+c)& nCbWOC3i z+epk2~OYT literal 0 HcmV?d00001 diff --git a/docs/icons/privdelegate.gif b/docs/icons/privdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3aa8a65ef5277c6682f106de956da036c50d363 GIT binary patch literal 1045 zcmZ?wbhEHb6krfw_&$x{|NsBD3-0`y@q4k|5=ZZdhfm);e)ek3_S5^0UpsN`=JQu? zFQs0-|M=CZi}!XMxOD0IqaNMfjl0hJCs*%1c5Tz{a|>1 0-$^W=rQx9>k+>ALFmyU(xQe4H?EgI8Snr_bMJEZ?*H@RcuL ze=OZ_+&{Ty;o2jswjSAi IO7^wyn6fTZ3ixeXEp6UdL_BEH>IrC+CTH&qnA?_ zZr-r_?BoSIFQ;Fbx_Ik^d0S4LzjJZVqo>#39XfGwH^BC%mcZTCnHn)n99Wox5`H z=da%fPF&x-_rl%7FP}Vr9h%+{U)V8w*_Mra&Odl`_2jZ^p&5-&p1+&CaMzAQm*=cF zU=x^q`R1Lk-+rv!ekLNjxp&UC=}Y#m-gbJC-Qv>LIg{q^j4SB0@XI)R`PRnW=VJ5Q zXDr?K;^v1fd(Y(7PdmEh)~oK }Z+;!hSv z28L-2Iv@i;d4hrC6N4_N%!&qId44W7EtMCGCW#wQIi?e0vCxHsp-kl9Op6K4Vs;D+ zcRp^uaCVY-@DqoX8 Ynj67>A_%qWsZWPnuD}Kw%&~mCC`=#iz x;#2uhqQ1RGQZ~`_sezFVAOg+I?={@oQh6&3J#O_0`3qcQ@)kJ)ZdG+03e*WmVnF z^Bd>vIB@CF#g+GVc;49Hc ?*VhX^eEL$_I;S?t z;q-yc?{Bw0JskD*+0M2c_oqi=CRPT;=C|KGzkX&z#JAUn!n2y*T&c`&nEqh9%hwnC zj-0t!6=(DDL0?K)@6G+0dyidvbv}Rpw$;g{y)%~Yxxd46$H7ahx1WA_Dm}e?LT>%E z=O RU|^GzS5cL1XHZiY5LXoA)t{s+AtlYi9Tz=Gm|uiP)WbllqpPP+ z)n1a1MVG-Qb@J5dGyP4i^w=yDcg>x@Fn~iQhRG>ed)KlRqDdT#Ok55L&0)4WTUh+8 zU7DCIG@4uk%^kgCje~tTIqkw(n`EO*4C6yN8JXA^6cbM@GzwzkiQs5z?rCOXl94EQ h;J~8BE~;=s>7Yl8atNQ8$3hiOG3k^KQ#n}}tN|oJ0crpM literal 0 HcmV?d00001 diff --git a/docs/icons/privevent.gif b/docs/icons/privevent.gif new file mode 100644 index 0000000000000000000000000000000000000000..30db46df766c1b49bf86b168eaae03052ce8f292 GIT binary patch literal 580 zcmZ?wbhEHb6krfwcoxC%u)XR2<5$m5ME<&1wr2ZjNAHM}7w(?Ac<;oyoByBGKYsS= z!>2EQo@`jK`p~A`=l*@Vx#Pg4eaEjod-~|o^+*5z|L>^sdbOcGw|?5!19>l>J$(7} z{;?esvXVR|%-eGJOka3b)BFnAZ|^Vv{PMV`DW T9hkzICOvb -pxf=`s=6a*ZoWIz zncpzIeag~^VDI;PCrob+ez~A=_t7iqfi@{+eH(Y3%?r|f{`lU39rK<(ymj|z)7mD5 zrw^`IbuB!xslq?GCb_hC@3CvEx1X-eaXWu-;f{ls(#t3KCsj|)mk0WVVIY9wPZmZ7 zh6n~7kmaB_VPId_5Yg1!(%ROnB&Vz4>1!6;9>K)JX=TD-E7GpT#LsNOAR{z!GP4+i z=;C(8xe^TKMzh+PI5{=#92lIWnz-2oTv$x)gOr&WT)msw8CiG(d?KWetLrp#Tk1El zSi2t&_h{jAlx1VncGhE1P;F&n{J )Pg~o YNt8WsjZ2WhW2dPS@^dsgL^v3%0lNU+2mk;8 literal 0 HcmV?d00001 diff --git a/docs/icons/privextension.gif b/docs/icons/privextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..51dd267f0f7fa11a657ef51a69cb9159ced8775f GIT binary patch literal 608 zcmZ?wbhEHb6krfwc$Uj>|M9Ey9p}}Y>Kwfz)@(n0{n3wKGk%}Cc< z_}MGFi~}D&eOa*j(7xl>E?s|g`Sz<#yU*=7aOu e|7!l#yEE=pbuCOO>kH3nI&$V# zjc)DB39o7_8sE)*uj)OkMz7}o|NlqM+ G+UdKH=Bu-=(c{a_gsQ z1uU2rG~KoM((a>IdQJQC8>WYKecrh1?6QF6Z*RPfE9eZ(Xq;m+*QfS@Z~c=GS3ax^ zTJ>w@@5E{UcO1MFKjq)+iEn)CAJ^&CP4Jue`SIu17hjhcRQy`^J9g6Fcl+M0-hSFY zsoJCbCeRHGWC6vWEQ|~cxePiW-Jm#OVBg!2+mtK9sNLMr*(%AH(%Bisn3 JRM%%x*_Q%!)u8UTgK6xaX& literal 0 HcmV?d00001 diff --git a/docs/icons/privfield.gif b/docs/icons/privfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbf70f7a3fc3875ee62d9a4dacf3a088e60f2eff GIT binary patch literal 574 zcmZ?wbhEHb6krfwcoxXOU_A5w<5$tMZ>-sV+R-~==Gp&`pS{|2 ck;sB zs9D$d9ly5Yz@<&Q&uu;O@WZDsC9Cc&SbgZy^+%N(9`8MN?Z}y%6XtD6FP{*e)in3~ zzufw1b5DMnaOB&iXFs-|e^#^Q<&J}w)?fS6ec;Rd3;%W>y&~tgvS#!1OV55@eerwW z>8D3;f7FcHFk|_i)!R>>ef+a_)6>Nl|83lLHm;y^;^B`~T?=Do-)Ne+#58$p#rnq@ z;p=xFzH;Qut;^4U{r>&u-rHZLt#eY!di|5Cv#KYq*?aHM%@6qv)B6s6UU=bOMceF@ zvc9J6ue$cWTYU13e{xOrrl-$8{{H{}Kf|B_ia%Kx85jZ?bU-cw#R&uZ?1sRm=9bpB zHaUZU_EvpM9})YWCR<-wR(BDN9!-B`R#p!gogQ@)DOMGBHHIERZ+1g=D~7d!0-U@? z%mRW;3Q87Rw{bEu3yGSVF) U@oS6M zA3Ad8=A4!LcOSW$UOu6=Z^@K}JJxPL8J*X*|M-=-g3j&xFKyU)V)>?{I}TpXZ ~<8FFA!5q?GmgC)b2$HO1z)FWq>|KdHLBV_s-R -W7qZ^xtdtqH)rL+s;-4+F5gKh>zlEBk85Oca%u1E75ir{-(B0g{Nd9# zy|Xv%K71v)w13l{a|_oV*|_WMw*9Ab>!+2r&Z+KNvj6DiBWG>_y~!{@K=CIFBLhP? zgAT}kP@FKZFKY;IYHn$5Yvu6MkYR3b=1}JKwsGk75|9;ZQRHQ1XO;2{7vK;Tv@llE zQ8i=dV%PEww-YrK_mH=CRq&t38YmJjCMfRI!tAads%9?~&cq`ez{u3h9AYkVE}Vyf zQNq@-@4U1N7Z;=E)pj;hOKxsmXSP0WhVKk~l5TxI3@i+?J`E2w7#dhugj6aV4hyoe bg&D1>Sm4~I%pAO=LgC{f*1gV+3=Gx);f>!6 literal 0 HcmV?d00001 diff --git a/docs/icons/privmethod.gif b/docs/icons/privmethod.gif new file mode 100644 index 0000000000000000000000000000000000000000..71f882264291eb056bc55dce1c73f9b7cae1aa4a GIT binary patch literal 603 zcmZ?wbhEHb6krfwc$UHN|NsB{k6)edIDhH-BS-IuHQP_0ICpc??sJcyy*hRA-iJ?L ze$DuO^1|H}0V}UwUGr|~``!6_zJFL f1uPs=8=+o^_@AkcWyykJKdg;o5 zRcp4cO)Tnsaq-2=r>kFIe7)n~r6Xr +a6D*XPzhEogdr`Gor$?uTbJUCqDx;p&H8)4r=Su0A{SY{rsxbq4hpvo3Yb zTvysUr$(=)P^IYQgjc<@*Zx}f``z64DP_I$ZRY>}{pZ*0-%~B7olZY9f7R|9-P$kD zzFf+_TyN0u`SIt=H*SBp^5M;;Hxv9OR%uuJC)eygd}Z&kYjFjgZ*RQ)wfgsm#~*U* zr=^tj{hIlEj?LUh>mU7^|NHgCHwTZbSrxH*!n`dPb1zkO%w4_xbbkF5V7M_*11SDv zVPs&)V9)^>28t5~_8kowP0cN0Opz^}&217)zFjT;OyUj+rW!4Rd|Flv25}MG+;&V} z3=@(B_+7bU)B_m=<@ge%%`? eE&*(~qUwlq@F(Tx>i;Nlc!XZ6ca;`P?Fa5nK| z;ACVKW%g*2m2wwy3o_ 2xq2V9{v&NLh ymNqX2CINOIi^Cfn7?@djBrFazCbqIDYBX3REMswIvEH(0gHSS;U|S;tgEasMh7D{0 literal 0 HcmV?d00001 diff --git a/docs/icons/privproperty.gif b/docs/icons/privproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..b1e8074654b3fc0601b0302f1be7b39f5bf5eb7b GIT binary patch literal 1054 zcmZ?wbhEHb6krfw_&$T-|NsAs)*t!*_xJtBuWIMsU$g!6|JQkr-VrCx-Te0d|C%NJ z|KDc#`iGpnaQD>3dpizXdi?CwzT?+6?LK$##HE5n?}9|H1*;ETy8h_kiHi+|F+YC) zd+_viY3rPnvfkYKX@^c;e);mzk;$UQ>Y{gVUU{=ZaB^$$wHr64wgkWb^84*^@73E+ zf4QE%Zbro0!wx@w{k?ZEv8rpKe^T|Gy&( BuL?`9o2b8GLhYo9Mg{CZU6pIo!!;H4vHZhpI+=@Sqfn$b98`JViS z>9P6kH|{<=asK9nd0XypGDaQ4Lh`rPOfGiB|kYwkSxG`b>k*`oNO7)Rg0u+B-# z18g0q&0TV2$JD1!?uTbJ)z&xlObBqCXS85iLwZ6`cTr$+Y44wZ{}xYgc=YVeuU$%d zicHs5>iJt4eERnH>E*U%2iKiDb?DLAsx@mjMEZuOl=c1m{r~U3e{*)seD~}B)7PJ$ zz59LO_{HV>mT0EQ{QLiZ egvM@3* z%wW&~X$9p829DnhhMY%Cj-2iAu6$vlInmK)kpr_~;3LCh4M#P#Q*QiBR9>`Hk~>1; z#zz(RF58Sgfryzdj{U;ie_|$HYU1RyEas3fT)cpz)v;7;1EaHA3%^t 7xQ zt(lQk$EC6HC36D tS^a6kC&EH94>aBumn&dwYH7?jjd&y?(eQwQiA89WOHal@#wi@3Dl0lR)+n&> P$sO`(a%OdMV6X-N?RS8o literal 0 HcmV?d00001 diff --git a/docs/icons/privstructure.gif b/docs/icons/privstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed6d1ef68f8736e5c05137be2af0ff7714ddb85b GIT binary patch literal 630 zcmZ?wbhEHb6krfwc$UZT|NsB{k6(RzcjN2h?jGIVhpR-szrX#Y;OUy}ryac`8k2Z_ z@BIDv-H#LJZvJ}l`*!M`Qy1@@ym0sat*<9$h(CVz>ir&_-|zqIIB@CG^+(RdC-)t{ zwqW%k2IHCEUeEn_%=zsWiC@ouZ`ytC_q#uzZe4l1S>nT|FQu(>er^Bt?bY0GYrb7d zy*#gi@9oUD{z=t$my4#9^~M!+KB#{9Vd2N!hp%khb@t2cQqTF1cOShHo8O*N)>pXg z HH@xPxjsT^kdVHrL_XzU(fST zu9>&-#=*NkLo*uhoIn5Zxbw$14}LsZ{^>%@yZhUJzFe1EKP^0~>Dz{HpKp~Oxc4o+ ze8Q^ qrg}0wC#Qc1@2^f+LqyxpDEQ|~cc?>!rt)MtzV87gu*Tlfa%EZvr*_GGAsv#WQ z(cRoC%WNv#-qY2a!kl66Ka)XhQXUiQw9FtmQ57yG_N7gFp3D(BYvs9=`MKGZIy{&| zas!=qE3 _;~z{nwOo0cu4rD^0GYsjLS9HY&}k>n#O z <^9_#Rm)yEerz82^S71ck}Y`NGQz`RA_YP5iejl$gyCd w0t=&*O2!2Rm&vL;0yA$hJnU(cRXnwYAz4e1RXB9Zfenj}c%OG^WMHrc0AYACZvX%Q literal 0 HcmV?d00001 diff --git a/docs/icons/protclass.gif b/docs/icons/protclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9294292a9b5f94a281de7657b5555d06bb4a96 GIT binary patch literal 600 zcmZ?wbhEHb6krfwc;>?J|NsBT?|$SrO#k-o#@{!8qi5gvaU U(s18H{JnJp2FehrhQA?)+N&>)iqU6Enm=U(5M5 fY;zXP32Fyxl50uY&Kx0h7 BEa_ z?`}`~_jQeF^42G}kG*|#swZ3i{XYG#uh+de5exJS!%zc?KUo+V7+e^1Kn@4R2?P7q z2A3um22KuUhUTv3Rt|a5j-IYweO2iRO$>saEp2LIin69W%r1i5vwPJSD61@SVc{0$ zW?}BrkT%y`zfo9Rh>wBUOiR|0hv}r@z5^@__Ply>21}VX=$>`4;I(99Gf{H6wt-Kg ziPy=-fn9;?QL_XqqYJM!8#}wmyT^>I0@{ov6%2_E_j}6!DimmZXz1u?W)nFfFy+ks jL+qbB9Ih JYjEY8z0)sUGw};FY literal 0 HcmV?d00001 diff --git a/docs/icons/protdelegate.gif b/docs/icons/protdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..b209f2d816d78188dbcd93907917d7a0ef34eaa9 GIT binary patch literal 1041 zcmZ?wbhEHb6krfw_&$N*|NsBD3+~+A6ZPXp#$vlAiyQQQ&G>zJNB#3xZ!e`@es@5B z!P>(;y1i#F-}-;v$UnLI#LD>oJSE4_{Mix^8B4gbm`4|&u-s;K7H|8YyZs6doR3x z_j&TdT|a;QzPRU+cYNjj^Xpc+uA07N@6j!{KD@sF_1lk==kIRVefIw2S1Y%i+_-M) z-ecE}pSyD{_tJ!U8y49u{ fPP+3%f) zFMoJ(?Q;5+wL8vCUa)iavMt*WUINA!!ziF$2q^w!VPs&Kz@P&%5|k$xINmWRa>{fl zaL=>hVAE3JU}|3=V-}|qvSL}Us7ElH;!KMVf^0?;7;-c>3bamE^yxBiI-JPZ%5C1D zlgXgT(lA?dhsMfcr2~9UzGi0{Ltdygs2goj;e4RvFx{n0&S6)vf 3EF6*!Fv!K9+hCZoKv#l4gfF7O*r}nJDO8B1BdLL*QL>%yjiiD@LlaY-SSZH> z@l#x!T?!Tw1r}#T G8VDV9AMK_f%j88HWS`1}G*;p8?0XW=!tN;K2 literal 0 HcmV?d00001 diff --git a/docs/icons/protenumeration.gif b/docs/icons/protenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc96bb635982abc9d306f219ebdd71d29f95757c GIT binary patch literal 583 zcmZ?wbhEHb6krfwcoxO*cwfNXJyAbyWGrsbORt)`XI}KX1Nx8l`hR;p|JB8!{ye2m zk0*Y4Hsj0lneXqkzPnNX_FB!CXEVRQJ^%Vr>BoDW-`_5)>RI;bVSiQk^1Q~`_jY(b zy0~)tH18W596!9ie`%$~|MNy?78$<2Sp4<%g8arg54O9UKCt=oqt(k=EpDFOI=>_C z^~1B@UY)qPKlAC~sLu~q&1{HRGO_gO(U`_G=gmtdytz{O{&s73q0h$$edSS>Z8`2O znXX@-?fm*?)7KaKUYv;i_jS$9BQxK h=+*iB+9Zb^Gs7O8ZGCe4*rPpu?{7E1 zJe@hOGymnO^yk+$KR=Q3;`Xc`Z%*Ie;n|Zd|Lygmm*=Xh;%pvX-v0XbmZyg!|NsBb zKwqHvlZBCiA&Nl UeGH< Cw3dOhd6|LdLB 1d>tfmE9rf=H=>LCGe_~~Pf1c9Y zN2i`Wee~h={r~5U{yf?6e(!{TpKh+3o^ba}-}A@!UM^@{)@m^|U;ggVrVlT!J-L1C z-R)^#-)ySPar^!2$G7*FzkmPs?oj7~Znt-@?)5aqoY+)xdVOiOzvlA`ookyEUYv-% zee250RdruquX}!d^YrH6Z=YVqxf{HEdVl$pglFeFPwkt3Y{!I%VDAH)`d=)qdHV2H zN0rz4gA0FtdAw$N*6YVto?c$vlP%wqq4enP)mIzppFX($@9UaRXQte{ac+Kv?2pg) zvXVT$9>{z7?BR!Flm7qz&oIb<;!hSv1_ply9gw>~al*hpvBAHoxuvzO*;ZJ?L_*ch zrrn>JpF`1-!Cax;i&>CWhryd?;$&7A2J6M`@^gI{l(Z*K;^1%>5M?klYT{;7<8% +3`kU9um%8i0?sP{ literal 0 HcmV?d00001 diff --git a/docs/icons/protextension.gif b/docs/icons/protextension.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcd07f5e1a673de3120e3f82e6f8c24f8bcd723b GIT binary patch literal 589 zcmZ?wbhEHb6krfwc$Ua;zT^Cl8yR=^L@jR6yZ-3M V_iN9!Lg_h0dD?)!JI?*07!^J4C$ zcekf`l;3>)@T_a`r57h+f6e|~XHfs-_OS_m6My~sRi$11?bFL;trl$?{)cpY`0(P| z)%>dtImdfV`@X)}RHIk(Y{v7RZ21pYKGf;e?J3w>yyX9{b-&}M{F`Gl_uamCv6KFK zRNVBffAV_bo3O6WH&)F1@c6^Dpy{RRr6o)MKVI`#)q9p!z=9gx+OMzI`P4l;y}s19 z{_#|cX}?zgUKX%?zRmo*GwwY*^UOSc!>^gYUtfHkIPL$3s~`S-UE@>x;Pd0ppB{Yv z^6X2WTmSa1mX$%Pe$D@VG3(O*|Nj|i1{8m?FfuSCGU$M80L2Ld`>KY-rbJ!_hvtsX zRu_iI&Q2o+OEX)BsQzXKQC|)Y5r*g)iGDm>3LL=(%8SILmd1-a>Mx2*&^8H(u`pKg zv~q6dWA); !TW$=&E7f#Oe`l$Rxz<6f%QVnvsc#lR2=N-PEp0 zi(iQGm23xlsCTmx6C<+(o1{U3LTkHh1k2B0^Nc1&4w;G#3JX3QZsO>Wahl*1IH9w< MpF`rM1P6mP0LI|@H~;_u literal 0 HcmV?d00001 diff --git a/docs/icons/protfield.gif b/docs/icons/protfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ae6833e0821dae813c941500d1e12a88c7c334f GIT binary patch literal 570 zcmZ?wbhEHb6krfwc;>;tU_A5x|NlR3WZc~owYWhqdiIT(XaB!DpnrKs{iYkgqh?)y zetq+ocMndijNf|XVSk>|hu8NjH$0wu^3#VG*J`%B{P^up-=WVH>mS!{dTN@y_21Vu zPp@u~^IO@q_ubdm>$(qo`S$7MlMla}w>;W@{@MRqDVk9m-o3illPzDl;mP8Q{~o;i zGvUa$|L2XqzS%VQ*xT1%{w%!k@5PDO)9XtQ-TW~B!oPR7r#(B<)Vk%-vrm7Tw!eDv z@z2rQA15CExbO7SHGA)Ags-pO^mOj|e=)OftiSf>^~1AIZXa9LYH{h=PoSq5h5}Ih z$->CM;K85+ax5rL7}%#bcr-P)crdnhG&3qnh_-h&F=~m+3hMWFFj{G7vxy11Pq1*1 zXJa!EQk|e@ 39u6a3Zboxf5ogJLn-A(TF}ZO&v9g|F zu=S9ZlTv5aVNvF~wvVrg!<31cnVrSMnCoe?Fs};JTbCwl2D?^QW+sjq4K62+*_N}g T@^*Y=aB^}~kW%AeVXy`OyDG~U literal 0 HcmV?d00001 diff --git a/docs/icons/protinterface.gif b/docs/icons/protinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1b96d2c6a0b681cb6d65d30f8e212a3c2d29081 GIT binary patch literal 562 zcmZ?wbhEHb6krfwc;?OU<3`5aJyDAr^e*qHzj623`;VWm+ %v`?v$?aqRzOH$9d)n96>o)B hta8)1|Mi^~NxQF@vOm zFpg~@_}FOOyjstQ&;S4bA^8LW000jFEC2ui01*HX000DJ@X1NvaHVQ_1K!j%1YSl7 z!f_N1>3$&4x&a`esrtx(3nZYOW9aw+9|nSwFt7k*i6}5BU@#N{&QsbXpcV~;Vlpr` lA6`ZyJSHd3NCJW(HUuSx#?^k8=*4}04GVmI1%!PO06U9(O_u-w literal 0 HcmV?d00001 diff --git a/docs/icons/protoperator.gif b/docs/icons/protoperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb75ab8b05d4b8d65401c5270ae31836ce04f9b GIT binary patch literal 547 zcmZ?wbhEHb6krfwc*el+|Ns9VH!|+-iCWyCcX>zsy94@eC70hmI`!t=#}BXX|37bZ zVrBfD`%n7wl)S3$oi{TqY?_(4!sFfTX;-}6{(W6jyEikvaza4Ui(`_)xl^8eeY5H7 z>vatWa<`xT8M)A|CtH5zwojcaUd`L~!Z)!hWtF#W`d-U~El+MAtK5~6TR*k)SVdBC zw@-X!Y1^C+FRn#4U3bhm@$S{V*!+%NTUVJzuYUdTY-s1F=hrt!_y0V-zBFO#f8&T{ znd<^isVOXLwRmwNHax4@J*u>DOEkmK1d2adzz){|k)SwXU~gz(Xlib0ZRXKz>tYb# zXp!h<5NolW$Y9jRz~5wLVJ6PU*6zq4JZ*U!JBuZ^v8;k5n}MpDi8aG2DMm&+^NB3d zBJxaJ%=?8HnV49am6~OmbQ$!xxfsuwwrDhKGpI8$G8;B)i8`ssF*r0mIHRcFY}2g# S#-5k6Rj^5?<@@qR25SJ^#+_vV literal 0 HcmV?d00001 diff --git a/docs/icons/protproperty.gif b/docs/icons/protproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..55473d16e1321bc3e4cbcb5a165f51a55f9f07a0 GIT binary patch literal 1039 zcmZ?wbhEHb6krfw_}<0v|Ns9*>yP~Z`}@a@jJtcH7B}eC&b@zmNB#fTdA|N3?+)m% zS;^7aopc;aF~qSuL)@dr;_n%Q4 680UFSixNI0mLUEZ?`} z#fjKI|NeP<``x{HCBWA4%k}hc51ZeA`ThNF*3aMnPp>b1vqEsyu3Ha3{O_ETIk~lX z-HeEP2NTm1f({(NxOUx|ohP4OIC1FT*EMe*ukg1r@C^+6_UWZhKrk1(z|V(8pU#J+ zhWY<`z2U@6*`93qx38c7dQ^1w#Qx{kHwUkAytY!$e!8Z#0Qaw5N-tkNdUUob(l^}4 zKd3%8`p({vmeRPNkL%z3{BNu-dg$ck?WaC|z7%m}$JFA|njgRZww`HSJiX!D?aX6m zj_D~fEtuBu_OQdJSDO-IVqZTz`|9S@2e(daUDkNw{LN3_{{H> 2Wa z5)tO9PzZ2J_GH&-Ss@Y8nantYm#1ru=I3P>cwO3fRJb-d9AnnClQ?kWF^jXjXc*6g z$c9Ia99*{BJ_t@;!YeGKpvG|G(^D1(UXfKXou3^abO}bWaxgF~Xq_k0z;|QC1jh&b z3|Wj1J{Gi}W3*sq`!jP<22TS6qn83-LBoj&>MSxM0V#~@8yqsyc&rT485o(k)WY3j zk_{(t@v*f`TYRGLDcgp_PZFFH92y0f&hPLzaGOJjGe+eKpX|mT4oo^q4hDIDIzBZr IGBQ{L0HyC{fdBvi literal 0 HcmV?d00001 diff --git a/docs/icons/protstructure.gif b/docs/icons/protstructure.gif new file mode 100644 index 0000000000000000000000000000000000000000..af356a1db0b8e8821d2f6c94734b98354875e85d GIT binary patch literal 619 zcmZ?wbhEHb6krfwc$UoY|Ns9VH!{AxyYcwl4+i6ziyQQMbbBAJ67ih>_({Rj@9%G4 z-ckScarf_?zZ;Wy?(T{D{rb=STVGGi5Px?-|90w~Z?ETmJm&o8{h#-HbUxj>Qn>Bo z+bt6Pc}gc%#yc0E{D0o)*}2x=@BaLH{`>3eb$8C6fAjR(+szV3uHFA~tK`G$`;jYO zo_X;3?aa5^raC;Re)xImr+;79EUgtdc=Pp#7uW7C7yW!b?c;Ih&lh4oUyOO$@%+V! z*k!F2ukX$Le5>Ty%{}+ZA3SM!viAD_d&T$O-JUkjbbj>g8^7Kkt=jqK$EF|OUd?^` z=+xFD_rBaN{d6Jb)r41 q|f1D*d+M+lPf8BUilmaDT_QSMz?o*$)gT1{wgxpDc_F49N^SAhSVn!oYr_ zA-Rcxi=By~sk1A&h22vqqNBUHRg}j^sJ*AFH<8EI!fYmk_@rbe_GucvViIb6Oq@%b zOoDl0%-2fuNs91tDs~tKxdkSf?v~`_<@FFb$fV01Et|lnaym3tUq?jAi`#~g(b~>c z&_66L(o&C&TiGCrU!K)bPSC~A!JbWt+nLFx!eAkT2=5Ob4nqdU13i55Od>XgPq~?x zm?e~$0v x!9%B@<;gKug_44ZM@5qqv}A&K6gC{1vdDqK8UQ3G B8EpUn literal 0 HcmV?d00001 diff --git a/docs/icons/pubclass.gif b/docs/icons/pubclass.gif new file mode 100644 index 0000000000000000000000000000000000000000..1a968ab633207f47ec5e3130ec676f0d43598bb0 GIT binary patch literal 368 zcmZ?wbhEHb6krfwxN5}k|NsAQ?`}lTzVZ0okG0#6JX|I6_s!pL?{8g7z5M o8Mbf(8r2 zp(R0XIx!l@Rf3{yHW~z|JTT0ir6tMRSy-d6W0S){R=L^}M$Ar41`Kl)d3;!=d+P}E z3NrF(N$K-&bt%+03NkRT^J(+3Gq4n@_Qg(`W;COaS31~v-h5AKCe0;2o(q_n1avjl otTWmmAj8DX?Cr$DwQ<*;tzL4nyP1!AF&G}%w~yhJrz3+k0J6oL{{R30 literal 0 HcmV?d00001 diff --git a/docs/icons/pubdelegate.gif b/docs/icons/pubdelegate.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a43eb261adccddee2206769150a9e2d964ed136 GIT binary patch literal 1041 zcmeH`{WFsR0LLG0>%7DvcU^bR#jQK%xKkV}(m0l0*4uHXy30!^gj%}Nd&*TyI9D<@ zvNh&y4`a+Q^=w|YC(LZ@1(C@%8_USsGcV;o=nv@o`{$R>=e{RT;ju>(oB$_ajSB4S z?2Hp9kP-_cv{GkSkR{361hPEe{IHnYgYvO@Za)p|{=Kq({`%wgZh2`S#V}j1RIsSn zG6dOdruCn`mi0N5A?Rh5*9uh`YLGWTss0+9mJ@aLUVa%@B$>cnO6Lh=jK;n?4p`kJ z(i_ZMTifYRixe5MrRCKb-9m56SjfdRc<6idjpwCR4Tg6{G6U4i&QHx4wEAB^W{d(@ zB^hF^tga&b4!;L5-Z7-T}_>mGjR`LrsAj0w1HTP=p6 nY#WHr%q^+ gG;Pa{2b1CXc-3NLHr%U>g(W;)*VhPC+v6*Ex zP-FXG@p~?n*#fqLNE2dST9qe{EH14un??M(;rA8oGL@#YXLNgeyP6|jUE82A8x~B< zYwL(sQ*W_s7JgzEGx!hQR!Byshxr;~;r!UGaRIEPgFWJ*i7Oee*qwt-{2`-h`HM&~ ztk68lrOhf$H?j(2lC!yx%rI}Jh0yC-d%kzi6_j&pBkOoVxk|~ZZGnvoOI2)95uMZB z$I8s1C?>T0-ch}Jk(f>XsWXoM&_`ar`!^`?fB$U2V*_Oc093$dm)QLTU}FM;Y~7-u zZ!RvVJ>D3S82*SOKk|uQ$4DFjJjJUNE5%{l03dpr?X=G|;1!ZWM5S82cE}uf5XFY^ zQ9x=zr60x%=XpFVoTrMO)1vk~^FfQ9X$3hR4uJ=NMeS?HzyRy)X^(@D9XcY=$|_zs zSmNS;LFEkHcP@3L@-V5Gxqf>ev^C`97msuIrMf~1QhX%SKhcEJKTffKNw}%Nk%$Qq zd7kJadkcv;8xp}&xLFhSR`TXVl3grTdMLMuVDApotZUHj_$OW=i!UNB787i>XOA5w W!S3M>-YMZwV($I|X%HF(1pfiQ@~q|n literal 0 HcmV?d00001 diff --git a/docs/icons/pubenumeration.gif b/docs/icons/pubenumeration.gif new file mode 100644 index 0000000000000000000000000000000000000000..46888adef937f09868b1aff485010ad847625183 GIT binary patch literal 339 zcmV-Z0j&N (Pbf!&&RmbLYrp^5KtqjHc?* za^l2s<;7g>)_nBlnc}@q=gfSDY)AL)rrf+_?%03v-ihkZZ{W8?^yiuK(X`h>z|#7Zt2TuZ-Jcm?a$@ITH?{E>B?vC+=aBHilvcv^yZk%qA_}lr+8dCZh@Qc z+k=5-L-F8_pNL-BziE|zWSN9&dR{ztS~=^`gneQ_?9_R@tdifjNurK)@7sl*iE#h_ z{{R30A^8LW002G!EC2ui01yBW000JXK%a0(EE !iiKn z4i!jX__&S%6r$8nkQg@~(+QQv5-foTK=WC#T3itp2L%roH9i4gVq_mXCIcrPD;kPw lY;FuaM>a1!czOUcM>;JygoYO~M -8eVBIr#a7&Z+tGuQt>#pOO#}?0x>=!f)>{|M-0G_pcwfZ(ZrA@_Mnf=Gpnq zmrw66=yp4>bIF?NS=s)YSxFvu&-Bf&kUg=fq9;S?<*K@;53avl(D?lEy|qmWUk~J+ z+Bg61(Wa*lZ~gr8_}GpKpUzCF%yD~nsPq4m`d=5zo}Y+(*xvO2|9=J?K=CIFBLjmu zgAPa@ MKlJCh@8yFl7ixFRNZ06KZzOwPN+z zv<(MOw%xcR)*I23_It(+G5s19o*Z-S8h+h27B({_t~PU7W=)Mr<}8BjGt3 =_Q{DAPKYq>lt?WK&MZn5;OW*I#-&3bo_v!Yh%ePmOK&_XZeGp5`ugJQ8r@p0fCbZnrk_qf<6HlvnK%)epr> z{uingwQcx+G3(OH39sU({EMCR*Qf5`lT%MVJpS`{L6a^97CgNFGw z^IuPVb20bQulc`y>mR?{_b#mKvrp{ <89)!|G(D#{&3~PuhqXFt$#GZ zZ{k#oX?JJbD^)N3^x(63{D%Mk|1%64p!k!8k%1wQK?md_P@FKZw=@Jc1#&W&G 0fUL<3?)XqgsXpxwn5}&UoFGrw} zp=^gSE5D_rwY18jKnW>z4j)miKxbWpepgm2Kjl-+3OeG=EZUBDAGz5-V`O9zlv8v% Z#l^^Np~1s+_cM3E&u2`ke^{9qtN|Sl$x;9S literal 0 HcmV?d00001 diff --git a/docs/icons/pubfield.gif b/docs/icons/pubfield.gif new file mode 100644 index 0000000000000000000000000000000000000000..5aed17576f4493ccfdb12f7a8a55fa2cbd74041c GIT binary patch literal 311 zcmZ?wbhEHb6krfwxT?dzU_3K=_Klfm|8KhSJ8IVTsr#N)Zg{-)$iwF!e=of7Z{p#P z_ul^M+WW3)`>Uh3Kh|z~su8|^-|45`C41!jR$hMoYyGu9l^dR1diL|uvmbqjKJU8z z@&Et-hi-nj`r>!@fiGtt|J;A$y=n5+`4|4pJ^5+Ek#CDH{;OF3xMuV7x#$1I%)U{x z<>i{a_kda$$OVc&Sr{1@bbt^DKz?Fi3vrlM;GrYc@1gXp(Sy%ktu684k_eBco`+3u zGHjR}lT;k%iD)!t7%(bu_c~@WFz)DYZCE9=iP_9ulaaBGLC`~irKODBPllz(&xwyg Nd(!k7GhG}RtO2HXg;M|k literal 0 HcmV?d00001 diff --git a/docs/icons/pubinterface.gif b/docs/icons/pubinterface.gif new file mode 100644 index 0000000000000000000000000000000000000000..c38a4c46a9a7603bc498664c294c7c06a713e555 GIT binary patch literal 314 zcmZ?wbhEHb6krfwxN5|3 ZVUQpY+eD{&7vsdijaq#l?{g*cFIk#xtz9|cLB$xCr-*j~8#$(6M z-8^&oPXD~kdyZV)fBed}{il;l`>VT_0BvC)4k-R)VPs%1V$cC82l E)~P;Pd*c`+O~Z`kDLHZ`GDkm))4&({9xIoBQn2?6teCjWv##q^{)3 yhlKQmSzza_!jd?!NB&pZm x!AK(QVR|IF|6^@a~=O^W*cU zPpJB?`{m-RrckHo(dc?Bd*+zuoTskl%;w{) 5%GwFo3C0s(vtkd@g)-Cw0$= z&;S4bA^8LW002J#EC2ui01yBR000JNz@KnPMEF$1 LIW=%7c@T_3Mdpi3m6Y) bKQTH02`MrHm_Hv1IXxz!LKYr1LO}pKPRg(M literal 0 HcmV?d00001 diff --git a/docs/icons/puboperator.gif b/docs/icons/puboperator.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ebe10a7ec532625741cc8668b1126f2553cdc9c GIT binary patch literal 310 zcmZ?wbhEHb6krfwxXQrr|Nnols(WwVeRM0i9NPIQy8maw)c<$xKM81hkzP3=w|;8n zu9VpPj#Fw1>9hZrw#_+jW|+Ayuy9Ls{=)w$tGs;^tFCyvC9d#rk1DlH*wSzy_n4$` zQgL@-(@dZEO5=!S;aSa*3+-&v_nJnpcFZ}^d90##ZzcovfZ|UUuwgnN667ZawqS>b z0uLQ7ey+tr7X$^&y&alvbTCQyF}P%C2naMD{LsJ{u_oi`k&A!ZJQtmLF?n6|?Szd1 l$~7_ D1)D@O#GT~o%bXk;tN}%7Un2kj literal 0 HcmV?d00001 diff --git a/docs/icons/pubproperty.gif b/docs/icons/pubproperty.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfad7b43006984b0d27846a9c6d23d9bfb94ec95 GIT binary patch literal 609 zcmV-n0-pUxNk%w1VGsZi0OoxFqOZjN|NsB}`$kSweVyO`>u#*1kM{rn|Ltf^PgLme z{K3f4!N}5ZVM Gba^OtU*~#SN;C}nU8wy>*wOldhGfC z-?B2qlNCRgDag;+-oar{IxyDd|Io<7(&G5ItfO0aS?~1wb9H=)lBYqQGU~fAU|e1H z+i8`AQ-Et%&dS31 i;r~82J1CqnCh$bzU0~3xIK4DP|np>HmqGY1XMO=I;CB?f-vmTl3Ob zwWfhgP*e8dgO;77(Bl94x+41PunGqd`1<`&JwatwPwmG`u9#ST!Em?A@zv`8`r>l@ z{{E(-U;O_6j$#x`PEp?J`mC+6`TPHJTtULg)AG+&+`UxY+0;u*PN0^6jF3?6!$9=c zXSvDci*ixKxRuk{ FMI-(}u{I9ZgYI|Ii=*|Nj6000000A^8LW004aeEC2ui z01yBW000NRfPI34goTAAb!|{YZy0w+I6hs3BUVlYm|${jbV@vg87~N21rtDPTUBBe z1g$p)F)j!pEl+VPKX57pIdcY54;nTISsZ#DWI7%MUIuv&DGeYNd=ys^S|&mZ0eD3+ z0Wb|qMl4f;J4oCD0s#SGXK8j#1B5jJ>;V@;Gztny^#-X40001lf(S(f6vP0ZfH7E3 vFfl`d%ECSk3!*_-aK^ Am}xe((G}uY&L6G3OIA#BZnGdAnKS{;jW_hkyQl{pal#iQn)3e7+F# zey`4-_kX^ eH{!7h~?6KmX}M%-b)&zODK8`Bv%2V=k|!ynfp8 ze4gq2kH?)qEd2O(=Gz~eetcf~>GQ3U$dxanR=jvn{qR!i &%1CPg |qcFzfuSnN3rm2{>v z$jq9|;iMv{Ai~7RyQIn8jYC~(l?0QVFh8$khXseZl!o*UIbME#ec^qK0!o6?Ym`q| zI~(W;%X?Z1IIiJi6E#)S)zmU!Z92#Fkc&rD+sxLL^>!2AJ2B1=tS+qLCcFj<667bb vva>O?uq !GFSrunAz6B literal 0 HcmV?d00001 diff --git a/docs/icons/slMobile.gif b/docs/icons/slMobile.gif new file mode 100644 index 0000000000000000000000000000000000000000..5edc31f94c61a7a50c3285ef00dcbe86e8690974 GIT binary patch literal 909 zcmZ?wbhEHb6krfw_|Cw<&~QMZ;eZ1WEjW;{;6MWq9XPP;)QA7SKm7myA1FTxMnhm2 zhky>qZ=k%uz){2?%pv2kVSxi92Q!O8!-mAe%}h)j784dUxU@4Vuq~MJz`> +3{L1~0m@lAUkDoRe1;9$K%)+a)R?z+epkVS_+3 literal 0 HcmV?d00001 diff --git a/docs/icons/static.gif b/docs/icons/static.gif new file mode 100644 index 0000000000000000000000000000000000000000..33723a92be0a7b2b9fc8057fb6f9a2a3ee729a7e GIT binary patch literal 879 zcmZ?wbhEHb;QNUQFEiC% z7n}SzyY0{GNB_QlU>F6XAuzl`K=CIFBLf3JgAT}Bpgh6A;lm)$!85^uv7wn=Tt*;+ zVd3FsMix6Afd zk*vw)JdXGPApH;j#U@kM7;k+&W>y z^wuAltPk$pT~`~kchkxZQyRXfGPHEeZ0eYOFP8aU0_X7)rxq_>)-z%8ruFMDoj-H> z^qK2dF6~Uw+p%NUy!ne7dzQ|dzj*Jy{qIs)>l%8FB+6~*F05{x+}7UT(%Sp$*RQVL z1$(z`+`VV-`swY5cWvHL=&-5K`^3RLyVou`apL5QScdH>+WX>V>l%9-nkN1E^JnSO z73=bxUcUi?x988Dd;aX{#Okt|hW@>K_pi-%S+;WB%NNhr<-4qD%f55_c6Z-`|Ns9p z&=Dy9WMO1rh-T0M*$Ijh2KJ_gNS5f9*0wel8;SOwRxe)eu-;y0H~Yyw>~``!!FopR zvOZc2t?JC;`aM?e!YwYI){K*##LWDIqD=f|C@AVGi)hb?W)k3Z3_TL97O1MibA-#o zAjFl8V}^y0xu&Uc#AHKeR_|zOK7O4ZTP2On(E)-oa_vl_QkK50k`CbvjSLLd0ER== A(*OVf literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..66dc8533 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,14 @@ + + + + + + + System.Linq.Dynamic.Core, EntityFramework.DynamicLinq and Microsoft.EntityFrameworkCore.DynamicLinq - Redirect + + +If you are not redirected automatically, follow this link to the default topic.
+ + diff --git a/docs/scripts/branding-Website.js b/docs/scripts/branding-Website.js new file mode 100644 index 00000000..dc31b27a --- /dev/null +++ b/docs/scripts/branding-Website.js @@ -0,0 +1,624 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding-Website.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 03/04/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2014 Sam Harwell, All rights reserved +// +// This file contains the methods necessary to implement the lightweight TOC and search functionality. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on a combination of the lightweight TOC code from Sam Harwell and +// the existing search code from SHFB. +//=============================================================================================================== + +// Width of the TOC +var tocWidth; + +// Search method (0 = To be determined, 1 = ASPX, 2 = PHP, anything else = client-side script +var searchMethod = 0; + +// Table of contents script + +// Initialize the TOC by restoring its width from the cookie if present +function InitializeToc() +{ + tocWidth = parseInt(GetCookie("TocWidth", "280")); + ResizeToc(); + $(window).resize(SetNavHeight) +} + +function SetNavHeight() +{ + $leftNav = $("#leftNav") + $topicContent = $("#TopicContent") + leftNavPadding = $leftNav.outerHeight() - $leftNav.height() + contentPadding = $topicContent.outerHeight() - $topicContent.height() + // want outer height of left navigation div to match outer height of content + leftNavHeight = $topicContent.outerHeight() - leftNavPadding + $leftNav.css("min-height", leftNavHeight + "px") +} + +// Increase the TOC width +function OnIncreaseToc() +{ + if(tocWidth < 1) + tocWidth = 280; + else + tocWidth += 100; + + if(tocWidth > 680) + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Reset the TOC to its default width +function OnResetToc() +{ + tocWidth = 0; + + ResizeToc(); + SetCookie("TocWidth", tocWidth); +} + +// Resize the TOC width +function ResizeToc() +{ + var toc = document.getElementById("leftNav"); + + if(toc) + { + // Set TOC width + toc.style.width = tocWidth + "px"; + + var leftNavPadding = 10; + + document.getElementById("TopicContent").style.marginLeft = (tocWidth + leftNavPadding) + "px"; + + // Position images + document.getElementById("TocResize").style.left = (tocWidth + leftNavPadding) + "px"; + + // Hide/show increase TOC width image + document.getElementById("ResizeImageIncrease").style.display = (tocWidth >= 680) ? "none" : ""; + + // Hide/show reset TOC width image + document.getElementById("ResizeImageReset").style.display = (tocWidth < 680) ? "none" : ""; + } + + SetNavHeight() +} + +// Toggle a TOC entry between its collapsed and expanded state +function Toggle(item) +{ + var isExpanded = $(item).hasClass("tocExpanded"); + + $(item).toggleClass("tocExpanded tocCollapsed"); + + if(isExpanded) + { + Collapse($(item).parent()); + } + else + { + var childrenLoaded = $(item).parent().attr("data-childrenloaded"); + + if(childrenLoaded) + { + Expand($(item).parent()); + } + else + { + var tocid = $(item).next().attr("tocid"); + + $.ajax({ + url: "../toc/" + tocid + ".xml", + async: true, + dataType: "xml", + success: function(data) + { + BuildChildren($(item).parent(), data); + } + }); + } + } +} + +// HTML encode a value for use on the page +function HtmlEncode(value) +{ + // Create an in-memory div, set it's inner text (which jQuery automatically encodes) then grab the encoded + // contents back out. The div never exists on the page. + return $('').text(value).html(); +} + +// Build the child entries of a TOC entry +function BuildChildren(tocDiv, data) +{ + var childLevel = +tocDiv.attr("data-toclevel") + 1; + var childTocLevel = childLevel >= 10 ? 10 : childLevel; + var elements = data.getElementsByTagName("HelpTOCNode"); + + var isRoot = true; + + if(data.getElementsByTagName("HelpTOC").length == 0) + { + // The first node is the root node of this group, don't show it again + isRoot = false; + } + + for(var i = elements.length - 1; i > 0 || (isRoot && i == 0); i--) + { + var childHRef, childId = elements[i].getAttribute("Url"); + + if(childId != null && childId.length > 5) + { + // The Url attribute has the form "html/{childId}.htm" + childHRef = "../" + childId; + childId = childId.substring(childId.lastIndexOf("/") + 1, childId.lastIndexOf(".")); + } + else + { + // The Id attribute is in raw form. There is no URL (empty container node). In this case, we'll + // just ignore it and go nowhere. It's a rare case that isn't worth trying to get the first child. + // Instead, we'll just expand the node (see below). + childHRef = "#"; + childId = elements[i].getAttribute("Id"); + } + + var existingItem = null; + + tocDiv.nextAll().each(function() + { + if(!existingItem && $(this).children().last("a").attr("tocid") == childId) + { + existingItem = $(this); + } + }); + + if(existingItem != null) + { + // First move the children of the existing item + var existingChildLevel = +existingItem.attr("data-toclevel"); + var doneMoving = false; + var inserter = tocDiv; + + existingItem.nextAll().each(function() + { + if(!doneMoving && +$(this).attr("data-toclevel") > existingChildLevel) + { + inserter.after($(this)); + inserter = $(this); + $(this).attr("data-toclevel", +$(this).attr("data-toclevel") + childLevel - existingChildLevel); + + if($(this).hasClass("current")) + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel") + " current")); + else + $(this).attr("class", "toclevel" + (+$(this).attr("data-toclevel"))); + } + else + { + doneMoving = true; + } + }); + + // Now move the existing item itself + tocDiv.after(existingItem); + existingItem.attr("data-toclevel", childLevel); + existingItem.attr("class", "toclevel" + childLevel); + } + else + { + var hasChildren = elements[i].getAttribute("HasChildren"); + var childTitle = HtmlEncode(elements[i].getAttribute("Title")); + var expander = ""; + + if(hasChildren) + expander = ""; + + var text = "" + + expander + "" + + childTitle + ""; + + tocDiv.after(text); + } + } + + tocDiv.attr("data-childrenloaded", true); +} + +// Collapse a TOC entry +function Collapse(tocDiv) +{ + // Hide all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value. + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(!done && +$(this).attr("data-toclevel") > tocLevel) + { + $(this).hide(); + } + else + { + done = true; + } + }); +} + +// Expand a TOC entry +function Expand(tocDiv) +{ + // Show all the TOC elements after item, until we reach one with a data-toclevel less than or equal to the + // current item's value + var tocLevel = +tocDiv.attr("data-toclevel"); + var done = false; + + tocDiv.nextAll().each(function() + { + if(done) + { + return; + } + + var childTocLevel = +$(this).attr("data-toclevel"); + + if(childTocLevel == tocLevel + 1) + { + $(this).show(); + + if($(this).children("a").first().hasClass("tocExpanded")) + { + Expand($(this)); + } + } + else if(childTocLevel > tocLevel + 1) + { + // Ignore this node, handled by recursive calls + } + else + { + done = true; + } + }); +} + +// This is called to prepare for dragging the sizer div +function OnMouseDown(event) +{ + document.addEventListener("mousemove", OnMouseMove, true); + document.addEventListener("mouseup", OnMouseUp, true); + event.preventDefault(); +} + +// Resize the TOC as the sizer is dragged +function OnMouseMove(event) +{ + tocWidth = (event.clientX > 700) ? 700 : (event.clientX < 100) ? 100 : event.clientX; + + ResizeToc(); +} + +// Finish the drag operation when the mouse button is released +function OnMouseUp(event) +{ + document.removeEventListener("mousemove", OnMouseMove, true); + document.removeEventListener("mouseup", OnMouseUp, true); + + SetCookie("TocWidth", tocWidth); +} + +// Search functions + +// Transfer to the search page from a topic +function TransferToSearchPage() +{ + var searchText = document.getElementById("SearchTextBox").value.trim(); + + if(searchText.length != 0) + document.location.replace(encodeURI("../search.html?SearchText=" + searchText)); +} + +// Initiate a search when the search page loads +function OnSearchPageLoad() +{ + var queryString = decodeURI(document.location.search); + + if(queryString != "") + { + var idx, options = queryString.split(/[\?\=\&]/); + + for(idx = 0; idx < options.length; idx++) + if(options[idx] == "SearchText" && idx + 1 < options.length) + { + document.getElementById("txtSearchText").value = options[idx + 1]; + PerformSearch(); + break; + } + } +} + +// Perform a search using the best available method +function PerformSearch() +{ + var searchText = document.getElementById("txtSearchText").value; + var sortByTitle = document.getElementById("chkSortByTitle").checked; + var searchResults = document.getElementById("searchResults"); + + if(searchText.length == 0) + { + searchResults.innerHTML = "Nothing found"; + return; + } + + searchResults.innerHTML = "Searching..."; + + // Determine the search method if not done already. The ASPX and PHP searches are more efficient as they + // run asynchronously server-side. If they can't be used, it defaults to the client-side script below which + // will work but has to download the index files. For large help sites, this can be inefficient. + if(searchMethod == 0) + searchMethod = DetermineSearchMethod(); + + if(searchMethod == 1) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.aspx?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + if(searchMethod == 2) + { + $.ajax({ + type: "GET", + url: encodeURI("SearchHelp.php?Keywords=" + searchText + "&SortByTitle=" + sortByTitle), + success: function(html) + { + searchResults.innerHTML = html; + } + }); + + return; + } + + // Parse the keywords + var keywords = ParseKeywords(searchText); + + // Get the list of files. We'll be getting multiple files so we need to do this synchronously. + var fileList = []; + + $.ajax({ + type: "GET", + url: "fti/FTI_Files.json", + dataType: "json", + async: false, + success: function(data) + { + $.each(data, function(key, val) + { + fileList[key] = val; + }); + } + }); + + var letters = []; + var wordDictionary = {}; + var wordNotFound = false; + + // Load the keyword files for each keyword starting letter + for(var idx = 0; idx < keywords.length && !wordNotFound; idx++) + { + var letter = keywords[idx].substring(0, 1); + + if($.inArray(letter, letters) == -1) + { + letters.push(letter); + + $.ajax({ + type: "GET", + url: "fti/FTI_" + letter.charCodeAt(0) + ".json", + dataType: "json", + async: false, + success: function(data) + { + var wordCount = 0; + + $.each(data, function(key, val) + { + wordDictionary[key] = val; + wordCount++; + }); + + if(wordCount == 0) + wordNotFound = true; + } + }); + } + } + + if(wordNotFound) + searchResults.innerHTML = "Nothing found"; + else + searchResults.innerHTML = SearchForKeywords(keywords, fileList, wordDictionary, sortByTitle); +} + +// Determine the search method by seeing if the ASPX or PHP search pages are present and working +function DetermineSearchMethod() +{ + var method = 3; + + try + { + $.ajax({ + type: "GET", + url: "SearchHelp.aspx", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 1; + } + }); + + if(method == 3) + $.ajax({ + type: "GET", + url: "SearchHelp.php", + async: false, + success: function(html) + { + if(html.substring(0, 8) == "") + method = 2; + } + }); + } + catch(e) + { + } + + return method; +} + +// Split the search text up into keywords +function ParseKeywords(keywords) +{ + var keywordList = []; + var checkWord; + var words = keywords.split(/[\s!@#$%^&*()\-=+\[\]{}\\|<>;:'",.<>/?`~]+/); + + for(var idx = 0; idx < words.length; idx++) + { + checkWord = words[idx].toLowerCase(); + + if(checkWord.length > 2) + { + var charCode = checkWord.charCodeAt(0); + + if((charCode < 48 || charCode > 57) && $.inArray(checkWord, keywordList) == -1) + keywordList.push(checkWord); + } + } + + return keywordList; +} + +// Search for keywords and generate a block of HTML containing the results +function SearchForKeywords(keywords, fileInfo, wordDictionary, sortByTitle) +{ + var matches = [], matchingFileIndices = [], rankings = []; + var isFirst = true; + + for(var idx = 0; idx < keywords.length; idx++) + { + var word = keywords[idx]; + var occurrences = wordDictionary[word]; + + // All keywords must be found + if(occurrences == null) + return "Nothing found"; + + matches[word] = occurrences; + var occurrenceIndices = []; + + // Get a list of the file indices for this match. These are 64-bit numbers but JavaScript only does + // bit shifts on 32-bit values so we divide by 2^16 to get the same effect as ">> 16" and use floor() + // to truncate the result. + for(var ind in occurrences) + occurrenceIndices.push(Math.floor(occurrences[ind] / Math.pow(2, 16))); + + if(isFirst) + { + isFirst = false; + + for(var matchInd in occurrenceIndices) + matchingFileIndices.push(occurrenceIndices[matchInd]); + } + else + { + // After the first match, remove files that do not appear for all found keywords + for(var checkIdx = 0; checkIdx < matchingFileIndices.length; checkIdx++) + if($.inArray(matchingFileIndices[checkIdx], occurrenceIndices) == -1) + { + matchingFileIndices.splice(checkIdx, 1); + checkIdx--; + } + } + } + + if(matchingFileIndices.length == 0) + return "Nothing found"; + + // Rank the files based on the number of times the words occurs + for(var fileIdx = 0; fileIdx < matchingFileIndices.length; fileIdx++) + { + // Split out the title, filename, and word count + var matchingIdx = matchingFileIndices[fileIdx]; + var fileIndex = fileInfo[matchingIdx].split(/\0/); + + var title = fileIndex[0]; + var filename = fileIndex[1]; + var wordCount = parseInt(fileIndex[2]); + var matchCount = 0; + + for(var idx = 0; idx < keywords.length; idx++) + { + occurrences = matches[keywords[idx]]; + + for(var ind in occurrences) + { + var entry = occurrences[ind]; + + // These are 64-bit numbers but JavaScript only does bit shifts on 32-bit values so we divide + // by 2^16 to get the same effect as ">> 16" and use floor() to truncate the result. + if(Math.floor(entry / Math.pow(2, 16)) == matchingIdx) + matchCount += (entry & 0xFFFF); + } + } + + rankings.push({ Filename: filename, PageTitle: title, Rank: matchCount * 1000 / wordCount }); + + if(rankings.length > 99) + break; + } + + rankings.sort(function(x, y) + { + if(!sortByTitle) + return y.Rank - x.Rank; + + return x.PageTitle.localeCompare(y.PageTitle); + }); + + // Format and return the results + var content = ""; + + for(var r in rankings) + content += "
"; + + if(rankings.length < matchingFileIndices.length) + content += "- " + + rankings[r].PageTitle + "
"; + + content += "Omitted " + (matchingFileIndices.length - rankings.length) + " more results
"; + + return content; +} diff --git a/docs/scripts/branding.js b/docs/scripts/branding.js new file mode 100644 index 00000000..2acdea51 --- /dev/null +++ b/docs/scripts/branding.js @@ -0,0 +1,562 @@ +//=============================================================================================================== +// System : Sandcastle Help File Builder +// File : branding.js +// Author : Eric Woodruff (Eric@EWoodruff.us) +// Updated : 10/08/2015 +// Note : Copyright 2014-2015, Eric Woodruff, All rights reserved +// Portions Copyright 2010-2014 Microsoft, All rights reserved +// +// This file contains the methods necessary to implement the language filtering, collapsible section, and +// copy to clipboard options. +// +// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be +// distributed with the code and can be found at the project website: https://GitHub.com/EWSoftware/SHFB. This +// notice, the author's name, and all copyright notices must remain intact in all applications, documentation, +// and source files. +// +// Date Who Comments +// ============================================================================================================== +// 05/04/2014 EFW Created the code based on the MS Help Viewer script +//=============================================================================================================== + +// The IDs of all code snippet sets on the same page are stored so that we can keep them in synch when a tab is +// selected. +var allTabSetIds = new Array(); + +// The IDs of language-specific text (LST) spans are used as dictionary keys so that we can get access to the +// spans and update them when the user changes to a different language tab. The values of the dictionary +// objects are pipe separated language-specific attributes (lang1=value|lang2=value|lang3=value). The language +// ID can be specific (cs, vb, cpp, etc.) or may be a neutral entry (nu) which specifies text common to multiple +// languages. If a language is not present and there is no neutral entry, the span is hidden for all languages +// to which it does not apply. +var allLSTSetIds = new Object(); + +// Help 1 persistence support. This code must appear inline. +var isHelp1; + +var curLoc = document.location + "."; + +if(curLoc.indexOf("mk:@MSITStore") == 0) +{ + isHelp1 = true; + curLoc = "ms-its:" + curLoc.substring(14, curLoc.length - 1); + document.location.replace(curLoc); +} +else + if(curLoc.indexOf("ms-its:") == 0) + isHelp1 = true; + else + isHelp1 = false; + +// The OnLoad method +function OnLoad(defaultLanguage) +{ + var defLang; + + if(typeof (defaultLanguage) == "undefined" || defaultLanguage == null || defaultLanguage == "") + defLang = "vb"; + else + defLang = defaultLanguage; + + // In MS Help Viewer, the transform the topic is ran through can move the footer. Move it back where it + // belongs if necessary. + try + { + var footer = document.getElementById("pageFooter") + + if(footer) + { + var footerParent = document.body; + + if(footer.parentElement != footerParent) + { + footer.parentElement.removeChild(footer); + footerParent.appendChild(footer); + } + } + } + catch(e) + { + } + + var language = GetCookie("CodeSnippetContainerLanguage", defLang); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + // If code snippet groups exist, set the current language for them + if(allTabSetIds.length > 0) + { + var i = 0; + + while(i < allTabSetIds.length) + { + var tabCount = 1; + + // The tab count may vary so find the last one in this set + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + + i++; + } + } + + InitializeToc(); +} + +// This is just a place holder. The website script implements this function to initialize it's in-page TOC pane +function InitializeToc() +{ +} + +// This function executes in the OnLoad event and ChangeTab action on code snippets. The function parameter +// is the user chosen programming language. This function iterates through the "allLSTSetIds" dictionary object +// to update the node value of the LST span tag per the user's chosen programming language. +function UpdateLST(language) +{ + for(var lstMember in allLSTSetIds) + { + var devLangSpan = document.getElementById(lstMember); + + if(devLangSpan != null) + { + // There may be a carriage return before the LST span in the content so the replace function below + // is used to trim the whitespace at the end of the previous node of the current LST node. + if(devLangSpan.previousSibling != null && devLangSpan.previousSibling.nodeValue != null) + devLangSpan.previousSibling.nodeValue = devLangSpan.previousSibling.nodeValue.replace(/\s+$/, ""); + + var langs = allLSTSetIds[lstMember].split("|"); + var k = 0; + var keyValue; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == language) + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element starts + // with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + + // If not found, default to the neutral language. If there is no neutral language entry, clear the + // content to hide it. + if(k >= langs.length) + { + if(language != "nu") + { + k = 0; + + while(k < langs.length) + { + keyValue = langs[k].split("="); + + if(keyValue[0] == "nu") + { + devLangSpan.innerHTML = keyValue[1]; + + // Help 1 and MS Help Viewer workaround. Add a space if the following text element + // starts with a space to prevent things running together. + if(devLangSpan.parentNode != null && devLangSpan.parentNode.nextSibling != null) + { + if(devLangSpan.parentNode.nextSibling.nodeValue != null && + !devLangSpan.parentNode.nextSibling.nodeValue.substring(0, 1).match(/[.,);:!/?]/) && + (isHelp1 || devLangSpan.innerHTML == '>' || devLangSpan.innerHTML == ')')) + { + devLangSpan.innerHTML = keyValue[1] + " "; + } + } + break; + } + + k++; + } + } + + if(k >= langs.length) + devLangSpan.innerHTML = ""; + } + } + } +} + +// Get the specified cookie. If not found, return the specified default value. +function GetCookie(cookieName, defaultValue) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + var value = globals.Load(cookieName); + + if(value == null) + value = defaultValue; + + return value; + } + catch(e) + { + return defaultValue; + } + } + + var cookie = document.cookie.split("; "); + + for(var i = 0; i < cookie.length; i++) + { + var crumb = cookie[i].split("="); + + if(cookieName == crumb[0]) + return unescape(crumb[1]) + } + + return defaultValue; +} + +// Set the specified cookie to the specified value +function SetCookie(name, value) +{ + if(isHelp1) + { + try + { + var globals = Help1Globals; + + globals.Save(name, value); + } + catch(e) + { + } + + return; + } + + var today = new Date(); + + today.setTime(today.getTime()); + + // Set the expiration time to be 60 days from now (in milliseconds) + var expires_date = new Date(today.getTime() + (60 * 1000 * 60 * 60 * 24)); + + document.cookie = name + "=" + escape(value) + ";expires=" + expires_date.toGMTString() + ";path=/"; +} + +// Add a language-specific text ID +function AddLanguageSpecificTextSet(lstId) +{ + var keyValue = lstId.split("?") + + allLSTSetIds[keyValue[0]] = keyValue[1]; +} + +var clipboardHandler; + +// Add a language tab set ID +function AddLanguageTabSet(tabSetId) +{ + allTabSetIds.push(tabSetId); + + // Create the clipboard handler on first use + if(clipboardHandler == null && typeof (Clipboard) == "function") + { + clipboardHandler = new Clipboard('.copyCodeSnippet', + { + text: function (trigger) + { + // Get the code to copy to the clipboard from the active tab of the given tab set + var i = 1, tabSetId = trigger.id; + var pos = tabSetId.indexOf('_'); + + if(pos == -1) + return ""; + + tabSetId = tabSetId.substring(0, pos); + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return ""; + + return document.getElementById(contentId).innerText; + } + }); + } +} + +// Switch the active tab for all of other code snippets +function ChangeTab(tabSetId, language, snippetIdx, snippetCount) +{ + SetCookie("CodeSnippetContainerLanguage", language); + + SetActiveTab(tabSetId, snippetIdx, snippetCount); + + // If LST exists on the page, set the LST to show the user selected programming language + UpdateLST(language); + + var i = 0; + + while(i < allTabSetIds.length) + { + // We just care about other snippets + if(allTabSetIds[i] != tabSetId) + { + // Other tab sets may not have the same number of tabs + var tabCount = 1; + + while(document.getElementById(allTabSetIds[i] + "_tab" + tabCount) != null) + tabCount++; + + tabCount--; + + // If not grouped, skip it + if(tabCount > 1) + SetCurrentLanguage(allTabSetIds[i], language, tabCount); + } + + i++; + } +} + +// Sets the current language in the specified tab set +function SetCurrentLanguage(tabSetId, language, tabCount) +{ + var tabIndex = 1; + + while(tabIndex <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tabTemp != null && tabTemp.innerHTML.indexOf("'" + language + "'") != -1) + break; + + tabIndex++; + } + + if(tabIndex > tabCount) + { + // Select the first non-disabled tab + tabIndex = 1; + + if(document.getElementById(tabSetId + "_tab1").className == "codeSnippetContainerTabPhantom") + { + tabIndex++; + + while(tabIndex <= tabCount) + { + var tab = document.getElementById(tabSetId + "_tab" + tabIndex); + + if(tab.className != "codeSnippetContainerTabPhantom") + { + tab.className = "codeSnippetContainerTabActive"; + document.getElementById(tabSetId + "_code_Div" + j).style.display = "block"; + break; + } + + tabIndex++; + } + } + } + + SetActiveTab(tabSetId, tabIndex, tabCount); +} + +// Set the active tab within a tab set +function SetActiveTab(tabSetId, tabIndex, tabCount) +{ + var i = 1; + + while(i <= tabCount) + { + var tabTemp = document.getElementById(tabSetId + "_tab" + i); + + if (tabTemp != null) + { + if(tabTemp.className == "codeSnippetContainerTabActive") + tabTemp.className = "codeSnippetContainerTab"; + else + if(tabTemp.className == "codeSnippetContainerTabPhantom") + tabTemp.style.display = "none"; + + var codeTemp = document.getElementById(tabSetId + "_code_Div" + i); + + if(codeTemp.style.display != "none") + codeTemp.style.display = "none"; + } + + i++; + } + + // Phantom tabs are shown or hidden as needed + if(document.getElementById(tabSetId + "_tab" + tabIndex).className != "codeSnippetContainerTabPhantom") + document.getElementById(tabSetId + "_tab" + tabIndex).className = "codeSnippetContainerTabActive"; + else + document.getElementById(tabSetId + "_tab" + tabIndex).style.display = "block"; + + document.getElementById(tabSetId + "_code_Div" + tabIndex).style.display = "block"; +} + +// Copy the code from the active tab of the given tab set to the clipboard +function CopyToClipboard(tabSetId) +{ + var tabTemp, contentId; + var i = 1; + + if(typeof (Clipboard) == "function") + return; + + do + { + contentId = tabSetId + "_code_Div" + i; + tabTemp = document.getElementById(contentId); + + if(tabTemp != null && tabTemp.style.display != "none") + break; + + i++; + + } while(tabTemp != null); + + if(tabTemp == null) + return; + + if(window.clipboardData) + { + try + { + window.clipboardData.setData("Text", document.getElementById(contentId).innerText); + } + catch(e) + { + alert("Permission denied. Enable copying to the clipboard."); + } + } + else if(window.netscape) + { + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + + var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance( + Components.interfaces.nsIClipboard); + + if(!clip) + return; + + var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance( + Components.interfaces.nsITransferable); + + if(!trans) + return; + + trans.addDataFlavor("text/unicode"); + + var str = new Object(); + var len = new Object(); + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance( + Components.interfaces.nsISupportsString); + + var copytext = document.getElementById(contentId).textContent; + + str.data = copytext; + trans.setTransferData("text/unicode", str, copytext.length * 2); + + var clipid = Components.interfaces.nsIClipboard; + + clip.setData(trans, null, clipid.kGlobalClipboard); + } + catch(e) + { + alert("Permission denied. Enter \"about:config\" in the address bar and double-click the \"signed.applets.codebase_principal_support\" setting to enable copying to the clipboard."); + } + } +} + +// Expand or collapse a section +function SectionExpandCollapse(togglePrefix) +{ + var image = document.getElementById(togglePrefix + "Toggle"); + var section = document.getElementById(togglePrefix + "Section"); + + if(image != null && section != null) + if(section.style.display == "") + { + image.src = image.src.replace("SectionExpanded.png", "SectionCollapsed.png"); + section.style.display = "none"; + } + else + { + image.src = image.src.replace("SectionCollapsed.png", "SectionExpanded.png"); + section.style.display = ""; + } +} + +// Expand or collapse a section when it has the focus and Enter is hit +function SectionExpandCollapse_CheckKey(togglePrefix, eventArgs) +{ + if(eventArgs.keyCode == 13) + SectionExpandCollapse(togglePrefix); +} + +// Help 1 persistence object. This requires a hidden input element on the page with a class of "userDataStyle" +// defined in the style sheet that implements the user data binary behavior: +// +var Help1Globals = +{ + UserDataCache: function() + { + var userData = document.getElementById("userDataCache"); + + return userData; + }, + + Load: function(key) + { + var userData = this.UserDataCache(); + + userData.load("userDataSettings"); + + var value = userData.getAttribute(key); + + return value; + }, + + Save: function(key, value) + { + var userData = this.UserDataCache(); + userData.setAttribute(key, value); + userData.save("userDataSettings"); + } +}; diff --git a/docs/scripts/clipboard.min.js b/docs/scripts/clipboard.min.js new file mode 100644 index 00000000..580433f1 --- /dev/null +++ b/docs/scripts/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v1.5.12 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Clipboard=t()}}(function(){var t,e,n;return function t(e,n,o){function i(a,c){if(!n[a]){if(!e[a]){var s="function"==typeof require&&require;if(!c&&s)return s(a,!0);if(r)return r(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[a]={exports:{}};e[a][0].call(u.exports,function(t){var n=e[a][1][t];return i(n?n:t)},u,u.exports,t,e,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;ao;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,a=o.length;a>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},a=function(){function t(t,e){for(var n=0;n a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f +}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" a",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h
]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,""],area:[1,""],param:[1,""],thead:[1," ","
"],tr:[2,"","
"],col:[2,""],td:[3,"
"," "],_default:l.htmlSerialize?[0,"",""]:[1,"X
"," ",""]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML="
a",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML="
a",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML="
a",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="
",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b) +},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c
t a",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("
").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n}); diff --git a/docs/search.html b/docs/search.html new file mode 100644 index 00000000..ad452b62 --- /dev/null +++ b/docs/search.html @@ -0,0 +1,35 @@ + + + +System.Linq.Dynamic.Core, EntityFramework.DynamicLinq and Microsoft.EntityFrameworkCore.DynamicLinq - Search + + + + + + + ++ System.Linq.Dynamic.Core, EntityFramework.DynamicLinq and Microsoft.EntityFrameworkCore.DynamicLinq - Search +++ ++ + diff --git a/docs/styles/branding-Help1.css b/docs/styles/branding-Help1.css new file mode 100644 index 00000000..8f7ba25a --- /dev/null +++ b/docs/styles/branding-Help1.css @@ -0,0 +1,40 @@ +/* Define the userData cache persistence mechanism for Help 1 files */ +.userDataStyle { + behavior: url(#default#userdata); +} + +/* Style adjustments for Help 1 */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} diff --git a/docs/styles/branding-HelpViewer.css b/docs/styles/branding-HelpViewer.css new file mode 100644 index 00000000..951621be --- /dev/null +++ b/docs/styles/branding-HelpViewer.css @@ -0,0 +1,48 @@ +/* Style adjustments for Help Viewer */ +.pageBody { + padding-top: 0px 20px 0px 0px; +} + +table { + width: 95%; + padding-right: 20px; +} + +table.members { + width: 95%; + padding-right: 20px; +} + +th p { + padding-bottom: 0px; +} + +td p { + padding-bottom: 5px; +} + +.codeSnippetContainerTabs { + top: 1px; +} + +.codeSnippetToolBarText { + top: -13px; +} + +.codeSnippetContainerTabSingle { + padding: 2px 15px 0px 15px; + height: 22px; +} + +.codeSnippetContainerTab a:visited { + color: #000000; +} + +.codeSnippetContainerTabActive a:visited { + color: #000000; +} + +span.keyword { + color: #0000ff; + font-weight: normal; +} diff --git a/docs/styles/branding-Website.css b/docs/styles/branding-Website.css new file mode 100644 index 00000000..d39e08c7 --- /dev/null +++ b/docs/styles/branding-Website.css @@ -0,0 +1,156 @@ +/* Style adjustments for websites */ +.pageBody { + padding: 0px 20px 0px 0px; +} +.topicContent { + margin-left: 280px; +} + +/* Lightweight TOC */ +.tocCollapsed { + background: url('../icons/TocCollapsed.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocExpanded { + background: url('../icons/TocExpanded.gif') no-repeat scroll center; + width: 17px; + height: 20px; + overflow: hidden; +} +.tocResize { + position: absolute; + top: 90px; + left: 300px; + width: 5px; + height: 20px; + padding-right: 5px; +} +.tocResize img { + border: none; + cursor: pointer; +} +div#leftNav { + float: left; + margin: 0px -1px 0 0; + width: 280px; + min-height: 10px; + position: relative; + border-right: 1px solid #b6b6b6; + padding-left: 10px; + padding-top: 15px; +} +div#tocNav { + font-family: 'Segoe UI' ,Verdana,Arial; + overflow-x: hidden; + line-height: normal; + margin: -20px 0 0 -4px; +} +div#tocNav > div { + overflow-x: hidden; + white-space: normal; + width: auto; + margin-bottom: 5px; +} +div#leftNav a, div#leftNav a:link, div#leftNav a:visited { + color: #1364c4; + text-decoration: none; +} +div#leftNav a:hover { + color: #3390b1; +} +div#tocNav > div > a, div#tocNav > div > a:link, div#tocNav > div > a:visited { + display: block; + margin-left: 18px; + overflow: hidden; +} +div#tocNav > div.current > a, div#tocNav > div.current > a:link, div#tocNav > div.current > a:visited { + color: #000; + font-weight: bold; + text-decoration: none; +} +div#tocNav > div > a.tocExpanded, div#tocNav > div > a.tocCollapsed { + float: left; + display: inline-block; + margin-left: 0; + vertical-align: top; +} +div#tocResizableEW { + cursor: e-resize; + width: 15px; + top: 0; + height: 100%; + position: absolute; + display: block; + font-size: 0.5px; + right: -7px; +} +.toclevel0:first-child { + margin-top: 16px; +} +div#tocNav > div.toclevel1 { + padding-left: 17px; +} +div#tocNav > div.toclevel2 { + padding-left: 34px; +} +div#tocNav > div.toclevel3 { + padding-left: 51px; +} +div#tocNav > div.toclevel4 { + padding-left: 68px; +} +div#tocNav > div.toclevel5 { + padding-left: 85px; +} +div#tocNav > div.toclevel6 { + padding-left: 102px; +} +div#tocNav > div.toclevel7 { + padding-left: 119px; +} +div#tocNav > div.toclevel8 { + padding-left: 136px; +} +div#tocNav > div.toclevel9 { + padding-left: 153px; +} +div#tocNav > div.toclevel10 { + padding-left: 170px; +} + +/* Search form */ +form#SearchForm { + float: right; + background-color: #eee; + width: 280px; +} +form#SearchForm input { + background-color: #eee; + border: 0; + height: 22px; + width: 230px; + color: #3b3b3b; + display: inline-block; + margin: 1px 0 0 0; + padding: 1px 4px 1px 10px; +} +form#SearchForm button { + background: url('../icons/Search.png') no-repeat scroll center; + background-color: #eee; + float: right; + border: 0; + margin: 3px 2px 0 0; + cursor: pointer; + color: #3b3b3b; + width: 19px; + height: 18px; + overflow: hidden; +} +.searchContainer { + width: 700px; + margin-top: 50px; + margin-left: auto; + margin-right: auto; +} diff --git a/docs/styles/branding-cs-CZ.css b/docs/styles/branding-cs-CZ.css new file mode 100644 index 00000000..f38de749 --- /dev/null +++ b/docs/styles/branding-cs-CZ.css @@ -0,0 +1,3 @@ +/* Start CS-CZ locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-de-DE.css b/docs/styles/branding-de-DE.css new file mode 100644 index 00000000..4cf80bad --- /dev/null +++ b/docs/styles/branding-de-DE.css @@ -0,0 +1,3 @@ +/* Start DE-DE locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-en-US.css b/docs/styles/branding-en-US.css new file mode 100644 index 00000000..248cbe5a --- /dev/null +++ b/docs/styles/branding-en-US.css @@ -0,0 +1,3 @@ +/* Start EN-US locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-es-ES.css b/docs/styles/branding-es-ES.css new file mode 100644 index 00000000..4a7ebbd6 --- /dev/null +++ b/docs/styles/branding-es-ES.css @@ -0,0 +1,3 @@ +/* Start ES-ES locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-fr-FR.css b/docs/styles/branding-fr-FR.css new file mode 100644 index 00000000..d924dec9 --- /dev/null +++ b/docs/styles/branding-fr-FR.css @@ -0,0 +1,3 @@ +/* Start FR-FR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-it-IT.css b/docs/styles/branding-it-IT.css new file mode 100644 index 00000000..36c6b224 --- /dev/null +++ b/docs/styles/branding-it-IT.css @@ -0,0 +1,3 @@ +/* Start IT-IT locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ja-JP.css b/docs/styles/branding-ja-JP.css new file mode 100644 index 00000000..403aa6dd --- /dev/null +++ b/docs/styles/branding-ja-JP.css @@ -0,0 +1,18 @@ +/* Start JA-JP locale-specific CSS */ +body +{ + font-family: Segoe UI, Verdana, Arial, MS Pゴシック; +} +pre +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.tt +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +span.code +{ + font-family: Consolas, Courier, monospace, MS ゴシック; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ko-KR.css b/docs/styles/branding-ko-KR.css new file mode 100644 index 00000000..2b46e923 --- /dev/null +++ b/docs/styles/branding-ko-KR.css @@ -0,0 +1,19 @@ +/* Start KO-KR locale-specific CSS */ +body +{ + font-family: Malgun Gothic, Segoe UI, Verdana, Arial; + font-size: 0.75em; /*9pt*/ +} +pre +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +span.code +{ + font-family: Consolas, Courier, monospace, 돋움체; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-pl-PL.css b/docs/styles/branding-pl-PL.css new file mode 100644 index 00000000..19e98103 --- /dev/null +++ b/docs/styles/branding-pl-PL.css @@ -0,0 +1,3 @@ +/* Start PL-PL locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-pt-BR.css b/docs/styles/branding-pt-BR.css new file mode 100644 index 00000000..a0683b0e --- /dev/null +++ b/docs/styles/branding-pt-BR.css @@ -0,0 +1,3 @@ +/* Start PT-BR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-ru-RU.css b/docs/styles/branding-ru-RU.css new file mode 100644 index 00000000..c31f83a4 --- /dev/null +++ b/docs/styles/branding-ru-RU.css @@ -0,0 +1,3 @@ +/* Start RU-RU locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-tr-TR.css b/docs/styles/branding-tr-TR.css new file mode 100644 index 00000000..81ca462e --- /dev/null +++ b/docs/styles/branding-tr-TR.css @@ -0,0 +1,3 @@ +/* Start TR-TR locale-specific CSS */ + +/* End locale-specific CSS */ diff --git a/docs/styles/branding-zh-CN.css b/docs/styles/branding-zh-CN.css new file mode 100644 index 00000000..87e7090d --- /dev/null +++ b/docs/styles/branding-zh-CN.css @@ -0,0 +1,18 @@ +/* Start ZH-CN locale-specific CSS */ +body +{ + font-family: "Microsoft YaHei UI","Microsoft YaHei","SimSun","Segoe UI","Lucida Grande",Verdana,Arial,Helvetica,sans-serif +} +pre +{ + font-family: Consolas, Courier, monospace!important; +} +span.tt +{ + font-family: Consolas, Courier, monospace; +} +span.code +{ + font-family: Consolas, Courier, monospace; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding-zh-TW.css b/docs/styles/branding-zh-TW.css new file mode 100644 index 00000000..eab654f8 --- /dev/null +++ b/docs/styles/branding-zh-TW.css @@ -0,0 +1,18 @@ +/* Start ZH-TW locale-specific CSS */ +body +{ + font-family: MS JhengHei, MingLiU, Segoe UI, Verdana, Arial; +} +pre +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.tt +{ + font-family: Consolas, Courier, monospace, 細明體; +} +span.code +{ + font-family: Consolas, Courier, monospace, 細明體; +} +/* End locale-specific CSS */ diff --git a/docs/styles/branding.css b/docs/styles/branding.css new file mode 100644 index 00000000..68503203 --- /dev/null +++ b/docs/styles/branding.css @@ -0,0 +1,583 @@ +/* General styles */ +body { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 15px; + padding: 0; + margin: 0; + margin-left: auto; + margin-right: auto; + color: #000; +} +h1 { + font-family: 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 2.5em; + font-weight: normal; + margin-top: 0; + color: #000; +} +h2, h3 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-weight: normal; + margin: 0; + padding-bottom: 5px; + padding-top: 5px; + color: #000; +} +h2 { + font-size: 1.769em; +} +h3 { + font-size: 1.231em; +} +h4, .subHeading { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1.077em; + font-weight: normal; + margin: 0; + color: #000; +} +.subHeading { + margin-top: 5px; +} +h5, h6 { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif; + font-size: 1em; + font-weight: normal; + line-height: 130%; + margin: 0; + color: #000; +} +a, a:link { + text-decoration: none; + color: #1364c4; +} +a:visited, a:active { + text-decoration: none; + color: #03697a; +} +a:hover { + text-decoration: none; + color: #3390b1; +} +a.button, a.button:active, a.button:hover { + float: right; + background-color: #0080c0; + color: white; + padding: 6px 12px; + font-size: 14px; + border: 1px solid transparent; + border-radius: 4px; + margin-left: 6px; +} +a.button:link, a.button:visited { + color: white; +} +img { + border: 0; +} +p { + margin-top: 0; + margin-bottom: 0; + padding-bottom: 15px; + line-height: 18px; +} +q { + font-style: italic; +} +blockquote { + margin-top: 0px; +} +table { + border-collapse: collapse; + padding: 0; + margin-bottom: 15px; + font-size: 15px; + width: 100%; +} +td, th { + border-bottom: 1px solid #dbdbdb; + margin: 10px; + padding-top: 10px; + padding-bottom: 10px; + padding-right: 8px; + padding-left: 8px; +} +th { + background-color: #ededed; + color: #636363; + text-align: left; + padding-top: 5px; + padding-bottom: 5px; +} +td { + color: #2a2a2a; + vertical-align: top; +} +table p:last-child { + padding-bottom: 0; +} +table.members { + width: 100%; +} +table.members td { + min-width: 72px; +} +table.members img { + padding-right: 5px; +} +div.alert img { + padding-right: 5px; +} +ol { + margin-top: 0px; + margin-bottom: 10px; +} +ol ol { + list-style-type: lower-alpha; +} +ol ol ol { + list-style-type: lower-roman; +} +ul { + margin-top: 0px; + margin-bottom: 10px; +} +.noBullet { + list-style-type: none; + padding-left: 20px; +} +ul ul { + list-style-type: circle; +} +ul ul ul { + list-style-type: square; +} +dt { + font-weight: 600; +} +pre { + font-family: Consolas, Courier, monospace; + overflow: hidden; +} +.pageHeader { + font-family: 'Segoe UI' , Tahoma, Helvetica, Sans-Serif; + background-color: #333333; + color: #d0d0d0; + padding: 5px 10px; + vertical-align: middle; + height: 25px; +} +.pageBody { + padding: 0px; +} +.topicContent { + padding: 10px 10px 15px 10px; + overflow: visible; + border-left: 1px solid #bbb; +} +.pageFooter { + clear: both; + border-top: solid 1px #bbb; + padding: 10px; +} +.feedbackLink { +} +.iconColumn { + width: 100px; +} +.seeAlsoStyle { +} +table.titleTable td { + padding-top: 0px; + border-width: 0px; +} +td.titleColumn { + margin-top: 0px; + padding-left: 0px; + vertical-align: middle; +} +td.logoColumn { + padding-left: 0px; + padding-right: 10px; + vertical-align: middle; + width: 1px; +} +td.logoColumnAbove { + padding: 0px 10px 0px 0px; + vertical-align: middle; +} +span.selflink { + color: #000066; +} +div.preliminary { + margin-top: 1em; + margin-bottom: 1em; + font-weight: bold; + color: #333333; +} +div.caption { + font-weight: bold; + font-size: 1em; /*12pt*/ + color: #003399; + padding-top: 5px; + padding-bottom: 5px; +} +.procedureSubHeading { + font-size: 1.1em; /*13.5pt*/ + font-weight: bold; +} +.summary { +} + +/* Collapsible region styles */ +.collapsibleAreaRegion { + margin-top: 15px; + margin-bottom: 15px; +} +.collapseToggle { + padding-right: 5px; +} +.collapsibleRegionTitle { + font-family: 'Segoe UI Semibold' , 'Segoe UI' , 'Lucida Grande' , Verdana, Arial, Helvetica, sans-serif !important; + font-style: normal !important; + font-size: 1.769em; + margin-top: 9px; + margin-bottom: 19px; + padding-top: 20px; + padding-bottom: 5px; + cursor: pointer; +} +.collapsibleSection { + padding: 0 0 0 20px; +} + +/* Syntax and code snippet styles */ +.codeSnippetContainer { + min-width: 260px; + margin-top: 10px; +} +.codeSnippetContainerTabs { + height: 23px; + vertical-align: middle; + position: relative; + z-index: 1; +} +.codeSnippetContainerTab { + padding: 0px 15px; + width: auto; + height: 22px; + color: #2a2a2a; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + float: left; +} +.codeSnippetContainerTabActive { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTabPhantom { + background: #f8f8f8; + padding: 0px 15px; + width: auto; + height: 22px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; + display: none; +} +.codeSnippetContainerTabSingle { + background: #f8f8f8; + padding: 2px 15px 0px 15px; + width: auto; + height: 20px; + color: #000000; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 12px; + font-weight: bold; + font-style: normal !important; + vertical-align: baseline; + border-top-color: #939393; + border-right-color: #939393; + border-left-color: #939393; + border-top-width: 1px; + border-right-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-left-style: solid; + float: left; +} +.codeSnippetContainerTab a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; +} +.codeSnippetContainerTab a:link { + color: #000000; +} +.codeSnippetContainerTab a:hover { + color: #136460; +} +.codeSnippetContainerTabActive a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabActive a:link { + color: #000000; +} +.codeSnippetContainerTabActive a:hover { + color: #000000; +} +.codeSnippetContainerTabPhantom a { + top: 2px; + color: #000000; + font-weight: bold; + text-decoration: none; + position: relative; + cursor: default; +} +.codeSnippetContainerTabPhantom a:link { + color: #000000; +} +.codeSnippetContainerCodeContainer { + border: 1px solid #939393; + top: -1px; + margin-bottom: 12px; + position: relative; +} +.codeSnippetToolBar { + width: auto; + height: auto; +} +.codeSnippetToolBarText { + top: -8px; + width: auto; + height: 0px; + padding-right: 0px; + padding-left: 0px; + vertical-align: top; + float: right; + position: relative; +} +.codeSnippetToolBarText a { + color: #1364c4; + text-decoration: none; + padding-left: 8px; + padding-right: 8px; + font-family: "Segoe UI" , "Lucida Grande" , Verdana, Arial, Helvetica, sans-serif !important; + font-size: 10px; + font-style: normal !important; + text-decoration: none; + margin-right: 10px; + margin-left: 0px; + background-color: #ffffff; +} +.codeSnippetToolBarText a:link { + color: #1364c4; +} +.codeSnippetContainerCode { + margin: 0px; + padding: 10px; + width: auto; +} +.codeSnippetContainerCode div { + margin: 0px; + padding: 0px; +} +.codeSnippetContainerCode pre { + margin: 0px; + padding: 5px; + overflow: auto; + font-family: Consolas, Courier, monospace !important; + font-style: normal; + font-weight: normal; + -ms-word-wrap: normal; +} +.codeSnippetContainerCode .keyword { + color: #0000ff; + font-weight: normal; +} + +.copyCodeSnippet { +} + +/* Keyword and phrase styles */ +span.code, span.command { + font-family: Consolas, Courier, monospace; + color: #000066; + background-color: #f4f4f4; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label { + font-weight: bold; +} +span.foreignPhrase, span.phrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.typeparameter { + font-style: italic; +} +span.identifier { +} +span.keyword { + font-weight: bold; +} +span.parameter { + font-style: italic; +} +dt span.parameter { + font-weight: normal; +} +span.literal, span.literalValue { + color: #cc0000; +} +span.comment { + color: #006633; +} +span.introStyle { + color: #a9a9a9; +} +span.nolink { + font-weight: bold; +} + +/* Auto-outline styles */ +ul.autoOutline { +} +li.outlineSectionEntry { +} +div.outlineSectionEntrySummary { +} + +/* Media styles */ +div.mediaNear { + text-align: left; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaFar { + text-align: right; + margin-top: 1em; + margin-bottom: 1em; +} +div.mediaCenter { + text-align: center; + margin-top: 1em; + margin-bottom: 1em; +} +span.captionLead { + font-weight: bold; + margin-right: .5em; +} +span.media img { + vertical-align: top; +} + +/* Glossary styles */ +div.glossaryDiv { +} +div.glossaryLetterBar { +} +hr.glossaryRule { +} +h3.glossaryGroupHeading { + color: #808080; +} +div.glossaryGroup { +} +dl.glossaryGroupList { + margin: 0; + color: Black; +} +dt.glossaryEntry { + margin-left: 2em; +} +dd.glossaryEntry { + margin-left: 2em; + margin-bottom: 2em; +} +div.relatedEntry { + margin-bottom: 4px; +} + +/* Bibliography styles */ +div.bibliographStyle { + padding-top: 5px; +} +span.bibliographyNumber { +} +span.bibliographyAuthor { + font-weight: bold; +} +span.bibliographyTitle { + font-style: italic; +} +span.bibliographyPublisher { +} +sup.citation a:link a:visited a:active { + text-decoration: none; +} + +/* Placeholder for the Help 1 user data style class */ +.userDataStyle { +} + + + +.missing +{ + color: #dc143c; + font-size: 8.5pt; + font-weight: bold; +} diff --git a/docs/styles/highlight.css b/docs/styles/highlight.css new file mode 100644 index 00000000..2916c31c --- /dev/null +++ b/docs/styles/highlight.css @@ -0,0 +1,28 @@ +.highlight-inline { color: #000066; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; } +.highlight-pre { clear: both; width: 99.5%; background-color: #EFEFF7; padding: 0.4em; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; margin-top: 0px; margin-bottom: 1em; } +.highlight-comment { color: #006633; } +.highlight-literal { color: #CC0000; } +.highlight-number { color: #009966; } +.highlight-keyword { color: #0000FF; } +.highlight-preprocessor { color: #996666; } +.highlight-xml-tag { color: #AA4400 } +.highlight-xml-bracket { color: #0000FF } +.highlight-xml-bracket-inline { background: #FFFF66 } +.highlight-xml-comment { color: #006633 } +.highlight-xml-cdata { color: #AA0088 } +.highlight-xml-attribute-name { color: #0000FF } +.highlight-xml-attribute-equal { color: #000000 } +.highlight-xml-attribute-value {color: #CC0000 } +.highlight-title { font-weight: bold; margin-top: 1em; margin-bottom: 2px; border-bottom: gray 1px solid; padding-bottom: 3px; } +.highlight-copycode { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; } +.highlight-copycode_h { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; text-decoration: underline} +.highlight-lineno { font-size: 80%; color: black } +.highlight-lnborder { border-right-style: solid; border-right-width: 1px; border-color: gray; padding-right: 4px; margin-right: 4px; width: 4px;} +.highlight-spacer { padding-right: 20px; } +.highlight-spacerShort { padding-right: 5px; } +.highlight-collapsebox { cursor: pointer; color: black; text-align: center; border-style: solid; border-width: 1px; border-color: gray; margin-left: 2px; margin-right: 5px; } +.highlight-collapsed { border-style: solid; border-width: 1px; border-color: gray; margin: 2px; color: gray; } +.highlight-expanded { border-left-style: solid; border-left-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; } +.highlight-endblock { border-left-style: solid; border-left-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; } +.highlight-pshell-cmdlet { color: #5A9EA5; font-weight: bold; } +.highlight-namespace { color: #008284; } diff --git a/docs/toc/00382765-2e26-f538-4a2d-b2485efd1a8e.xml b/docs/toc/00382765-2e26-f538-4a2d-b2485efd1a8e.xml new file mode 100644 index 00000000..cc5840d1 --- /dev/null +++ b/docs/toc/00382765-2e26-f538-4a2d-b2485efd1a8e.xml @@ -0,0 +1 @@ +\ No newline at end of file diff --git a/docs/toc/024bfd5b-b503-081f-f322-bba29b0db820.xml b/docs/toc/024bfd5b-b503-081f-f322-bba29b0db820.xml new file mode 100644 index 00000000..ad50e1f3 --- /dev/null +++ b/docs/toc/024bfd5b-b503-081f-f322-bba29b0db820.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/034ae87e-3b08-4832-3d16-21f20a6e540f.xml b/docs/toc/034ae87e-3b08-4832-3d16-21f20a6e540f.xml new file mode 100644 index 00000000..ca17fc77 --- /dev/null +++ b/docs/toc/034ae87e-3b08-4832-3d16-21f20a6e540f.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/059ea426-8283-f2ce-2fe8-a888fb9dfcc6.xml b/docs/toc/059ea426-8283-f2ce-2fe8-a888fb9dfcc6.xml new file mode 100644 index 00000000..979cbfba --- /dev/null +++ b/docs/toc/059ea426-8283-f2ce-2fe8-a888fb9dfcc6.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/096e6ff0-87d8-1e79-18f5-203f368fc5e8.xml b/docs/toc/096e6ff0-87d8-1e79-18f5-203f368fc5e8.xml new file mode 100644 index 00000000..e624db05 --- /dev/null +++ b/docs/toc/096e6ff0-87d8-1e79-18f5-203f368fc5e8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/09b1326f-d20c-fb04-9f6b-df23ec45a175.xml b/docs/toc/09b1326f-d20c-fb04-9f6b-df23ec45a175.xml new file mode 100644 index 00000000..b4bde87a --- /dev/null +++ b/docs/toc/09b1326f-d20c-fb04-9f6b-df23ec45a175.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/09c64b73-29db-e275-a4af-2731ed091dc5.xml b/docs/toc/09c64b73-29db-e275-a4af-2731ed091dc5.xml new file mode 100644 index 00000000..532a62f1 --- /dev/null +++ b/docs/toc/09c64b73-29db-e275-a4af-2731ed091dc5.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/0bc0206d-0724-3891-b8d5-51c48abff2eb.xml b/docs/toc/0bc0206d-0724-3891-b8d5-51c48abff2eb.xml new file mode 100644 index 00000000..3b867f94 --- /dev/null +++ b/docs/toc/0bc0206d-0724-3891-b8d5-51c48abff2eb.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/0e9009a8-cfed-c48e-51ad-e8d7d2dbd8d3.xml b/docs/toc/0e9009a8-cfed-c48e-51ad-e8d7d2dbd8d3.xml new file mode 100644 index 00000000..11ce24d3 --- /dev/null +++ b/docs/toc/0e9009a8-cfed-c48e-51ad-e8d7d2dbd8d3.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/144078bd-d1ad-bece-4daa-7fdd3a7ed7dc.xml b/docs/toc/144078bd-d1ad-bece-4daa-7fdd3a7ed7dc.xml new file mode 100644 index 00000000..94ba75d7 --- /dev/null +++ b/docs/toc/144078bd-d1ad-bece-4daa-7fdd3a7ed7dc.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/1480a26f-ba4e-6757-f81e-a750cb6e84be.xml b/docs/toc/1480a26f-ba4e-6757-f81e-a750cb6e84be.xml new file mode 100644 index 00000000..3d045837 --- /dev/null +++ b/docs/toc/1480a26f-ba4e-6757-f81e-a750cb6e84be.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/19b5d1da-767b-33fa-2450-d623c55c4fc0.xml b/docs/toc/19b5d1da-767b-33fa-2450-d623c55c4fc0.xml new file mode 100644 index 00000000..dc41ed41 --- /dev/null +++ b/docs/toc/19b5d1da-767b-33fa-2450-d623c55c4fc0.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/1b52f8e5-8c07-3f7e-4cd0-00ab1b21b3df.xml b/docs/toc/1b52f8e5-8c07-3f7e-4cd0-00ab1b21b3df.xml new file mode 100644 index 00000000..704d4b8b --- /dev/null +++ b/docs/toc/1b52f8e5-8c07-3f7e-4cd0-00ab1b21b3df.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/1cf4ec89-2692-7736-8791-f42cacc3c7d7.xml b/docs/toc/1cf4ec89-2692-7736-8791-f42cacc3c7d7.xml new file mode 100644 index 00000000..7d741b23 --- /dev/null +++ b/docs/toc/1cf4ec89-2692-7736-8791-f42cacc3c7d7.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/1e04daa1-5f80-6b39-c037-265c793bd6b8.xml b/docs/toc/1e04daa1-5f80-6b39-c037-265c793bd6b8.xml new file mode 100644 index 00000000..86a0d284 --- /dev/null +++ b/docs/toc/1e04daa1-5f80-6b39-c037-265c793bd6b8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/229e1980-ce7c-a4b5-01e0-d73c4a4183ec.xml b/docs/toc/229e1980-ce7c-a4b5-01e0-d73c4a4183ec.xml new file mode 100644 index 00000000..f7586009 --- /dev/null +++ b/docs/toc/229e1980-ce7c-a4b5-01e0-d73c4a4183ec.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/2664d667-ed19-c646-54ed-c9db2d9ad553.xml b/docs/toc/2664d667-ed19-c646-54ed-c9db2d9ad553.xml new file mode 100644 index 00000000..c5e7539c --- /dev/null +++ b/docs/toc/2664d667-ed19-c646-54ed-c9db2d9ad553.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/29287a92-5040-ef0a-3012-74071dbb18f6.xml b/docs/toc/29287a92-5040-ef0a-3012-74071dbb18f6.xml new file mode 100644 index 00000000..d348c487 --- /dev/null +++ b/docs/toc/29287a92-5040-ef0a-3012-74071dbb18f6.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/2adefda4-0a38-b90a-4c33-ec6bcab66e8d.xml b/docs/toc/2adefda4-0a38-b90a-4c33-ec6bcab66e8d.xml new file mode 100644 index 00000000..b241539c --- /dev/null +++ b/docs/toc/2adefda4-0a38-b90a-4c33-ec6bcab66e8d.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/2ee602f5-69fd-21ac-a1ad-e010a4708da4.xml b/docs/toc/2ee602f5-69fd-21ac-a1ad-e010a4708da4.xml new file mode 100644 index 00000000..74f13088 --- /dev/null +++ b/docs/toc/2ee602f5-69fd-21ac-a1ad-e010a4708da4.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/338e1130-f4c3-67b5-3977-34f5c2813f12.xml b/docs/toc/338e1130-f4c3-67b5-3977-34f5c2813f12.xml new file mode 100644 index 00000000..ed45e6ee --- /dev/null +++ b/docs/toc/338e1130-f4c3-67b5-3977-34f5c2813f12.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/369e6aa6-f96f-f4dd-06f2-7560309f8ca1.xml b/docs/toc/369e6aa6-f96f-f4dd-06f2-7560309f8ca1.xml new file mode 100644 index 00000000..2482cb9d --- /dev/null +++ b/docs/toc/369e6aa6-f96f-f4dd-06f2-7560309f8ca1.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/38c4b637-b07c-3339-19a3-c93c778f64f3.xml b/docs/toc/38c4b637-b07c-3339-19a3-c93c778f64f3.xml new file mode 100644 index 00000000..bc9b1dce --- /dev/null +++ b/docs/toc/38c4b637-b07c-3339-19a3-c93c778f64f3.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/3c0f5b0c-c3a6-cf67-bf11-b7997ecc1d2b.xml b/docs/toc/3c0f5b0c-c3a6-cf67-bf11-b7997ecc1d2b.xml new file mode 100644 index 00000000..32e02e60 --- /dev/null +++ b/docs/toc/3c0f5b0c-c3a6-cf67-bf11-b7997ecc1d2b.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/3ccebd50-94d3-b01b-5152-602a96eba478.xml b/docs/toc/3ccebd50-94d3-b01b-5152-602a96eba478.xml new file mode 100644 index 00000000..3cc595ba --- /dev/null +++ b/docs/toc/3ccebd50-94d3-b01b-5152-602a96eba478.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/3f310d0d-47d1-c5af-63bf-2bb2cd48f9dc.xml b/docs/toc/3f310d0d-47d1-c5af-63bf-2bb2cd48f9dc.xml new file mode 100644 index 00000000..f648174c --- /dev/null +++ b/docs/toc/3f310d0d-47d1-c5af-63bf-2bb2cd48f9dc.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4604db99-bf8f-7e67-5c9b-d23c5b8cd3f8.xml b/docs/toc/4604db99-bf8f-7e67-5c9b-d23c5b8cd3f8.xml new file mode 100644 index 00000000..eec77d2b --- /dev/null +++ b/docs/toc/4604db99-bf8f-7e67-5c9b-d23c5b8cd3f8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4771be47-ef15-eabc-87a7-18df1bc57ee1.xml b/docs/toc/4771be47-ef15-eabc-87a7-18df1bc57ee1.xml new file mode 100644 index 00000000..5eeaecf8 --- /dev/null +++ b/docs/toc/4771be47-ef15-eabc-87a7-18df1bc57ee1.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4d9b469b-c6a0-f277-b9ad-0d1d28917d8e.xml b/docs/toc/4d9b469b-c6a0-f277-b9ad-0d1d28917d8e.xml new file mode 100644 index 00000000..5566ad5e --- /dev/null +++ b/docs/toc/4d9b469b-c6a0-f277-b9ad-0d1d28917d8e.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4f801c37-c1cf-e3cf-a94f-339d3778e54f.xml b/docs/toc/4f801c37-c1cf-e3cf-a94f-339d3778e54f.xml new file mode 100644 index 00000000..b2c6eea6 --- /dev/null +++ b/docs/toc/4f801c37-c1cf-e3cf-a94f-339d3778e54f.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4fc51792-2e11-7c78-6601-69b6194e7236.xml b/docs/toc/4fc51792-2e11-7c78-6601-69b6194e7236.xml new file mode 100644 index 00000000..a31e932d --- /dev/null +++ b/docs/toc/4fc51792-2e11-7c78-6601-69b6194e7236.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/4fcb74af-e8be-d74c-c3c0-9ea78251a06b.xml b/docs/toc/4fcb74af-e8be-d74c-c3c0-9ea78251a06b.xml new file mode 100644 index 00000000..b345263d --- /dev/null +++ b/docs/toc/4fcb74af-e8be-d74c-c3c0-9ea78251a06b.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/502b87ce-612e-3be3-2f65-ba7e3e6b1b18.xml b/docs/toc/502b87ce-612e-3be3-2f65-ba7e3e6b1b18.xml new file mode 100644 index 00000000..2db08906 --- /dev/null +++ b/docs/toc/502b87ce-612e-3be3-2f65-ba7e3e6b1b18.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/52258a68-c6cd-eb94-f06c-ff2564b46af9.xml b/docs/toc/52258a68-c6cd-eb94-f06c-ff2564b46af9.xml new file mode 100644 index 00000000..dcb2af55 --- /dev/null +++ b/docs/toc/52258a68-c6cd-eb94-f06c-ff2564b46af9.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/5322a78d-cbe3-7e65-f001-78f5dadfe009.xml b/docs/toc/5322a78d-cbe3-7e65-f001-78f5dadfe009.xml new file mode 100644 index 00000000..eba8d920 --- /dev/null +++ b/docs/toc/5322a78d-cbe3-7e65-f001-78f5dadfe009.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/538022bc-a0ba-e89d-99bc-b9a9a313d75d.xml b/docs/toc/538022bc-a0ba-e89d-99bc-b9a9a313d75d.xml new file mode 100644 index 00000000..602dc45b --- /dev/null +++ b/docs/toc/538022bc-a0ba-e89d-99bc-b9a9a313d75d.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/53c2e70f-f99b-222f-951d-99d38056ec33.xml b/docs/toc/53c2e70f-f99b-222f-951d-99d38056ec33.xml new file mode 100644 index 00000000..9371feb6 --- /dev/null +++ b/docs/toc/53c2e70f-f99b-222f-951d-99d38056ec33.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/55a6c83e-c581-8ac9-f803-434224d5fbc6.xml b/docs/toc/55a6c83e-c581-8ac9-f803-434224d5fbc6.xml new file mode 100644 index 00000000..575718ac --- /dev/null +++ b/docs/toc/55a6c83e-c581-8ac9-f803-434224d5fbc6.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/58a7de95-1c6b-378b-31e1-88789cce70b0.xml b/docs/toc/58a7de95-1c6b-378b-31e1-88789cce70b0.xml new file mode 100644 index 00000000..4815fbae --- /dev/null +++ b/docs/toc/58a7de95-1c6b-378b-31e1-88789cce70b0.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/58c07e13-ecda-5b51-166e-30c41e312af7.xml b/docs/toc/58c07e13-ecda-5b51-166e-30c41e312af7.xml new file mode 100644 index 00000000..aae722de --- /dev/null +++ b/docs/toc/58c07e13-ecda-5b51-166e-30c41e312af7.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/5aba9200-bd4e-f860-8d36-0afe892d923e.xml b/docs/toc/5aba9200-bd4e-f860-8d36-0afe892d923e.xml new file mode 100644 index 00000000..7778a97a --- /dev/null +++ b/docs/toc/5aba9200-bd4e-f860-8d36-0afe892d923e.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/5abed614-073a-f031-8a3b-e7a9bb4b424a.xml b/docs/toc/5abed614-073a-f031-8a3b-e7a9bb4b424a.xml new file mode 100644 index 00000000..c02c5538 --- /dev/null +++ b/docs/toc/5abed614-073a-f031-8a3b-e7a9bb4b424a.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/5df0a6ee-f8a7-59ba-5ca8-0972aade618b.xml b/docs/toc/5df0a6ee-f8a7-59ba-5ca8-0972aade618b.xml new file mode 100644 index 00000000..1dfd2116 --- /dev/null +++ b/docs/toc/5df0a6ee-f8a7-59ba-5ca8-0972aade618b.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/60cf4e3d-b957-8668-65f6-d6c4150f6480.xml b/docs/toc/60cf4e3d-b957-8668-65f6-d6c4150f6480.xml new file mode 100644 index 00000000..4723f9f0 --- /dev/null +++ b/docs/toc/60cf4e3d-b957-8668-65f6-d6c4150f6480.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/60f75a32-d2a6-3473-c73a-ce56c1b18051.xml b/docs/toc/60f75a32-d2a6-3473-c73a-ce56c1b18051.xml new file mode 100644 index 00000000..1454ce75 --- /dev/null +++ b/docs/toc/60f75a32-d2a6-3473-c73a-ce56c1b18051.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/657799f7-4fc6-c4f4-dd51-1381a708d6b1.xml b/docs/toc/657799f7-4fc6-c4f4-dd51-1381a708d6b1.xml new file mode 100644 index 00000000..9c35a4f0 --- /dev/null +++ b/docs/toc/657799f7-4fc6-c4f4-dd51-1381a708d6b1.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/67829a69-deb4-f55a-359f-7d7d4e816d15.xml b/docs/toc/67829a69-deb4-f55a-359f-7d7d4e816d15.xml new file mode 100644 index 00000000..0aae3ec5 --- /dev/null +++ b/docs/toc/67829a69-deb4-f55a-359f-7d7d4e816d15.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/7199abad-ffd3-d84e-a9b5-87e29c1da288.xml b/docs/toc/7199abad-ffd3-d84e-a9b5-87e29c1da288.xml new file mode 100644 index 00000000..6d4fdaf0 --- /dev/null +++ b/docs/toc/7199abad-ffd3-d84e-a9b5-87e29c1da288.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/737f1217-f4a7-2b71-0afe-51f2c079f4ad.xml b/docs/toc/737f1217-f4a7-2b71-0afe-51f2c079f4ad.xml new file mode 100644 index 00000000..2136e3de --- /dev/null +++ b/docs/toc/737f1217-f4a7-2b71-0afe-51f2c079f4ad.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/759a2119-4b7a-6819-4b57-103452d73ce7.xml b/docs/toc/759a2119-4b7a-6819-4b57-103452d73ce7.xml new file mode 100644 index 00000000..18a82ded --- /dev/null +++ b/docs/toc/759a2119-4b7a-6819-4b57-103452d73ce7.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/7aecbfa8-8b16-a50a-29fe-7214fbc5aa63.xml b/docs/toc/7aecbfa8-8b16-a50a-29fe-7214fbc5aa63.xml new file mode 100644 index 00000000..1cbf05f3 --- /dev/null +++ b/docs/toc/7aecbfa8-8b16-a50a-29fe-7214fbc5aa63.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/7cc37a25-17e5-34f7-e023-83576a9f15ff.xml b/docs/toc/7cc37a25-17e5-34f7-e023-83576a9f15ff.xml new file mode 100644 index 00000000..bd327988 --- /dev/null +++ b/docs/toc/7cc37a25-17e5-34f7-e023-83576a9f15ff.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/7f35c3c4-5195-a494-b036-04afaa2225a6.xml b/docs/toc/7f35c3c4-5195-a494-b036-04afaa2225a6.xml new file mode 100644 index 00000000..023d8b89 --- /dev/null +++ b/docs/toc/7f35c3c4-5195-a494-b036-04afaa2225a6.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/844c188b-1abe-ae61-9fed-3bcfa67f1147.xml b/docs/toc/844c188b-1abe-ae61-9fed-3bcfa67f1147.xml new file mode 100644 index 00000000..92fec0f2 --- /dev/null +++ b/docs/toc/844c188b-1abe-ae61-9fed-3bcfa67f1147.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/897c5927-6102-febf-7b76-c0e9a179886f.xml b/docs/toc/897c5927-6102-febf-7b76-c0e9a179886f.xml new file mode 100644 index 00000000..7612553d --- /dev/null +++ b/docs/toc/897c5927-6102-febf-7b76-c0e9a179886f.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/8a0191e5-d3df-a99b-f4b2-a995106fd951.xml b/docs/toc/8a0191e5-d3df-a99b-f4b2-a995106fd951.xml new file mode 100644 index 00000000..aad68fed --- /dev/null +++ b/docs/toc/8a0191e5-d3df-a99b-f4b2-a995106fd951.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/8ae68a72-152c-5428-1973-60844a869bae.xml b/docs/toc/8ae68a72-152c-5428-1973-60844a869bae.xml new file mode 100644 index 00000000..53cb0196 --- /dev/null +++ b/docs/toc/8ae68a72-152c-5428-1973-60844a869bae.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/8c6db65a-0c75-1a36-f23f-4d0e58deef00.xml b/docs/toc/8c6db65a-0c75-1a36-f23f-4d0e58deef00.xml new file mode 100644 index 00000000..7a01df1e --- /dev/null +++ b/docs/toc/8c6db65a-0c75-1a36-f23f-4d0e58deef00.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/8c9e6389-18cd-6269-6181-8b148678cfa9.xml b/docs/toc/8c9e6389-18cd-6269-6181-8b148678cfa9.xml new file mode 100644 index 00000000..8be1fb14 --- /dev/null +++ b/docs/toc/8c9e6389-18cd-6269-6181-8b148678cfa9.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/8d5eb1b0-1ad8-5617-e4e0-519da559cf82.xml b/docs/toc/8d5eb1b0-1ad8-5617-e4e0-519da559cf82.xml new file mode 100644 index 00000000..774ecf3a --- /dev/null +++ b/docs/toc/8d5eb1b0-1ad8-5617-e4e0-519da559cf82.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/9252fe17-2fa4-d444-db5a-4a2a3adaa51f.xml b/docs/toc/9252fe17-2fa4-d444-db5a-4a2a3adaa51f.xml new file mode 100644 index 00000000..ffd24025 --- /dev/null +++ b/docs/toc/9252fe17-2fa4-d444-db5a-4a2a3adaa51f.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/97aa85dd-7d55-7d4a-d16c-6151057d4e14.xml b/docs/toc/97aa85dd-7d55-7d4a-d16c-6151057d4e14.xml new file mode 100644 index 00000000..f72a708d --- /dev/null +++ b/docs/toc/97aa85dd-7d55-7d4a-d16c-6151057d4e14.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/a05fe883-3a66-89c9-9fce-6ea5c8d8d8d5.xml b/docs/toc/a05fe883-3a66-89c9-9fce-6ea5c8d8d8d5.xml new file mode 100644 index 00000000..2340e918 --- /dev/null +++ b/docs/toc/a05fe883-3a66-89c9-9fce-6ea5c8d8d8d5.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/a2968e7a-28c6-4e4a-97a7-bd7ce4b74499.xml b/docs/toc/a2968e7a-28c6-4e4a-97a7-bd7ce4b74499.xml new file mode 100644 index 00000000..19200fb6 --- /dev/null +++ b/docs/toc/a2968e7a-28c6-4e4a-97a7-bd7ce4b74499.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/a5ecbe15-aade-af7f-4860-6c5c412a34b4.xml b/docs/toc/a5ecbe15-aade-af7f-4860-6c5c412a34b4.xml new file mode 100644 index 00000000..835d5615 --- /dev/null +++ b/docs/toc/a5ecbe15-aade-af7f-4860-6c5c412a34b4.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/a8ba3814-05f4-78f5-3342-df80bc14992c.xml b/docs/toc/a8ba3814-05f4-78f5-3342-df80bc14992c.xml new file mode 100644 index 00000000..2a1bec04 --- /dev/null +++ b/docs/toc/a8ba3814-05f4-78f5-3342-df80bc14992c.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/bd57e5da-91f3-3386-eb56-0945ca4e6df8.xml b/docs/toc/bd57e5da-91f3-3386-eb56-0945ca4e6df8.xml new file mode 100644 index 00000000..15188561 --- /dev/null +++ b/docs/toc/bd57e5da-91f3-3386-eb56-0945ca4e6df8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/c163ce6b-21e1-df62-207f-49053fd04c27.xml b/docs/toc/c163ce6b-21e1-df62-207f-49053fd04c27.xml new file mode 100644 index 00000000..a345c74b --- /dev/null +++ b/docs/toc/c163ce6b-21e1-df62-207f-49053fd04c27.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/c1be0fc8-f6e4-6bfe-4da7-329414bf8359.xml b/docs/toc/c1be0fc8-f6e4-6bfe-4da7-329414bf8359.xml new file mode 100644 index 00000000..c727e00f --- /dev/null +++ b/docs/toc/c1be0fc8-f6e4-6bfe-4da7-329414bf8359.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/c2dce7cc-70cd-a723-4b0c-60aa5478cade.xml b/docs/toc/c2dce7cc-70cd-a723-4b0c-60aa5478cade.xml new file mode 100644 index 00000000..218298f5 --- /dev/null +++ b/docs/toc/c2dce7cc-70cd-a723-4b0c-60aa5478cade.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/c49f9809-5da8-58fb-8339-86c7093be0a8.xml b/docs/toc/c49f9809-5da8-58fb-8339-86c7093be0a8.xml new file mode 100644 index 00000000..8c59df11 --- /dev/null +++ b/docs/toc/c49f9809-5da8-58fb-8339-86c7093be0a8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/ca3a380a-0fe3-cea2-0107-f7ca1d5bd9fe.xml b/docs/toc/ca3a380a-0fe3-cea2-0107-f7ca1d5bd9fe.xml new file mode 100644 index 00000000..0b23d2c4 --- /dev/null +++ b/docs/toc/ca3a380a-0fe3-cea2-0107-f7ca1d5bd9fe.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/cb8166eb-490f-ac7a-3759-9bf25cd3c1e3.xml b/docs/toc/cb8166eb-490f-ac7a-3759-9bf25cd3c1e3.xml new file mode 100644 index 00000000..fe01d7d5 --- /dev/null +++ b/docs/toc/cb8166eb-490f-ac7a-3759-9bf25cd3c1e3.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/cc0ffba1-1feb-5351-ec86-dd9d01bb025c.xml b/docs/toc/cc0ffba1-1feb-5351-ec86-dd9d01bb025c.xml new file mode 100644 index 00000000..7fb75558 --- /dev/null +++ b/docs/toc/cc0ffba1-1feb-5351-ec86-dd9d01bb025c.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/cde853fb-e83a-0911-6f76-7f04e385b62c.xml b/docs/toc/cde853fb-e83a-0911-6f76-7f04e385b62c.xml new file mode 100644 index 00000000..57066c88 --- /dev/null +++ b/docs/toc/cde853fb-e83a-0911-6f76-7f04e385b62c.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/d6a52ff1-1fd8-e1b3-b372-61d314a78d5e.xml b/docs/toc/d6a52ff1-1fd8-e1b3-b372-61d314a78d5e.xml new file mode 100644 index 00000000..046dd6eb --- /dev/null +++ b/docs/toc/d6a52ff1-1fd8-e1b3-b372-61d314a78d5e.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/dde5b439-ba6c-42bd-a39d-e163271019dd.xml b/docs/toc/dde5b439-ba6c-42bd-a39d-e163271019dd.xml new file mode 100644 index 00000000..c2d67308 --- /dev/null +++ b/docs/toc/dde5b439-ba6c-42bd-a39d-e163271019dd.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/de47654c-7ae4-9302-3061-ea6307706cb8.xml b/docs/toc/de47654c-7ae4-9302-3061-ea6307706cb8.xml new file mode 100644 index 00000000..f00ef7f3 --- /dev/null +++ b/docs/toc/de47654c-7ae4-9302-3061-ea6307706cb8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/e050a329-ded5-b6ad-bee5-bdcb2a97c5ee.xml b/docs/toc/e050a329-ded5-b6ad-bee5-bdcb2a97c5ee.xml new file mode 100644 index 00000000..2a39f24c --- /dev/null +++ b/docs/toc/e050a329-ded5-b6ad-bee5-bdcb2a97c5ee.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/e342c1b4-0ab2-9ff9-bbcb-78004b2d924d.xml b/docs/toc/e342c1b4-0ab2-9ff9-bbcb-78004b2d924d.xml new file mode 100644 index 00000000..9b1ae19e --- /dev/null +++ b/docs/toc/e342c1b4-0ab2-9ff9-bbcb-78004b2d924d.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/e57952b7-44ac-6a64-264d-6da3aea7093e.xml b/docs/toc/e57952b7-44ac-6a64-264d-6da3aea7093e.xml new file mode 100644 index 00000000..57a9b67e --- /dev/null +++ b/docs/toc/e57952b7-44ac-6a64-264d-6da3aea7093e.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/e7f88c42-6076-1782-76c7-7f00bb2ba6b4.xml b/docs/toc/e7f88c42-6076-1782-76c7-7f00bb2ba6b4.xml new file mode 100644 index 00000000..d9d51ca2 --- /dev/null +++ b/docs/toc/e7f88c42-6076-1782-76c7-7f00bb2ba6b4.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/e8054e46-4edd-0108-00f6-0af9ce5918b9.xml b/docs/toc/e8054e46-4edd-0108-00f6-0af9ce5918b9.xml new file mode 100644 index 00000000..e1bdbb35 --- /dev/null +++ b/docs/toc/e8054e46-4edd-0108-00f6-0af9ce5918b9.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/ebe0037e-4a11-896a-6db2-f3601e9fba51.xml b/docs/toc/ebe0037e-4a11-896a-6db2-f3601e9fba51.xml new file mode 100644 index 00000000..c9f410e6 --- /dev/null +++ b/docs/toc/ebe0037e-4a11-896a-6db2-f3601e9fba51.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/ed7f1515-c1bd-5914-ff3d-a11c448e1288.xml b/docs/toc/ed7f1515-c1bd-5914-ff3d-a11c448e1288.xml new file mode 100644 index 00000000..c20e6734 --- /dev/null +++ b/docs/toc/ed7f1515-c1bd-5914-ff3d-a11c448e1288.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/ed8ecef6-0089-eab6-3c3c-e76b190ea7e8.xml b/docs/toc/ed8ecef6-0089-eab6-3c3c-e76b190ea7e8.xml new file mode 100644 index 00000000..bfb47a51 --- /dev/null +++ b/docs/toc/ed8ecef6-0089-eab6-3c3c-e76b190ea7e8.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/ee19ea95-08a2-85c3-0e1a-7c0ac93345dd.xml b/docs/toc/ee19ea95-08a2-85c3-0e1a-7c0ac93345dd.xml new file mode 100644 index 00000000..4dd00f65 --- /dev/null +++ b/docs/toc/ee19ea95-08a2-85c3-0e1a-7c0ac93345dd.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/eeb7efeb-654f-1951-4973-cf8d1430fd87.xml b/docs/toc/eeb7efeb-654f-1951-4973-cf8d1430fd87.xml new file mode 100644 index 00000000..5430cf3a --- /dev/null +++ b/docs/toc/eeb7efeb-654f-1951-4973-cf8d1430fd87.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f3787db5-ab98-db68-694e-94d2ddd8b140.xml b/docs/toc/f3787db5-ab98-db68-694e-94d2ddd8b140.xml new file mode 100644 index 00000000..3073a6c9 --- /dev/null +++ b/docs/toc/f3787db5-ab98-db68-694e-94d2ddd8b140.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f4706713-1212-b813-600c-468d1315876e.xml b/docs/toc/f4706713-1212-b813-600c-468d1315876e.xml new file mode 100644 index 00000000..6516561c --- /dev/null +++ b/docs/toc/f4706713-1212-b813-600c-468d1315876e.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f553b938-f70f-c9bd-8e29-682200413e96.xml b/docs/toc/f553b938-f70f-c9bd-8e29-682200413e96.xml new file mode 100644 index 00000000..2b10b09c --- /dev/null +++ b/docs/toc/f553b938-f70f-c9bd-8e29-682200413e96.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f6fd3b5a-3d2f-fc65-c489-4d161f6f3072.xml b/docs/toc/f6fd3b5a-3d2f-fc65-c489-4d161f6f3072.xml new file mode 100644 index 00000000..7e8c017e --- /dev/null +++ b/docs/toc/f6fd3b5a-3d2f-fc65-c489-4d161f6f3072.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f7d5f52e-c819-340a-3fc4-9aa80263945a.xml b/docs/toc/f7d5f52e-c819-340a-3fc4-9aa80263945a.xml new file mode 100644 index 00000000..938e3784 --- /dev/null +++ b/docs/toc/f7d5f52e-c819-340a-3fc4-9aa80263945a.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/f8bf2a0a-9a63-8a01-4591-a46c51a49245.xml b/docs/toc/f8bf2a0a-9a63-8a01-4591-a46c51a49245.xml new file mode 100644 index 00000000..03204b98 --- /dev/null +++ b/docs/toc/f8bf2a0a-9a63-8a01-4591-a46c51a49245.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/fbeffa2b-5391-c0ef-59a5-cff1df0eb0b4.xml b/docs/toc/fbeffa2b-5391-c0ef-59a5-cff1df0eb0b4.xml new file mode 100644 index 00000000..e9df6960 --- /dev/null +++ b/docs/toc/fbeffa2b-5391-c0ef-59a5-cff1df0eb0b4.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/toc/roottoc.xml b/docs/toc/roottoc.xml new file mode 100644 index 00000000..3c351a3e --- /dev/null +++ b/docs/toc/roottoc.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/EntityFramework.DynamicLinq/EntityFramework.DynamicLinq.xproj b/src/EntityFramework.DynamicLinq/EntityFramework.DynamicLinq.xproj deleted file mode 100644 index 5271698b..00000000 --- a/src/EntityFramework.DynamicLinq/EntityFramework.DynamicLinq.xproj +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/src/System.Linq.Dynamic.Core/DynamicQueryableExtensions.cs b/src/System.Linq.Dynamic.Core/DynamicQueryableExtensions.cs index 7a487fe8..521c9376 100644 --- a/src/System.Linq.Dynamic.Core/DynamicQueryableExtensions.cs +++ b/src/System.Linq.Dynamic.Core/DynamicQueryableExtensions.cs @@ -703,7 +703,7 @@ public static IQueryable GroupJoin([NotNull] this IQueryable outer, [CanBeNull] Expression.Quote(resultSelectorLambda))); } - ///- - -14.0 -$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) -- - - -54415664-a73e-47af-b21f-e66b2db2ef14 -EntityFramework.DynamicLinq -.\obj -.\bin\ -v4.5.2 -- -2.0 -- + /// public static IQueryable GroupJoin([NotNull] this IQueryable outer, [NotNull] IEnumerable inner, [NotNull] string outerKeySelector, [NotNull] string innerKeySelector, [NotNull] string resultSelector, params object[] args) { return GroupJoin(outer, null, inner, outerKeySelector, innerKeySelector, resultSelector, args); @@ -1183,7 +1183,7 @@ public static IQueryable Select ([NotNull] this IQueryable sour return source.Provider.CreateQuery (optimized); } - /// + /// public static IQueryable Select ([NotNull] this IQueryable source, [NotNull] string selector, params object[] args) { return Select (source, null, selector, args); @@ -1198,7 +1198,7 @@ public static IQueryable Select ([NotNull] this IQueryable sour /// The result type. /// A projection string expression to apply to each element. /// An object array that contains zero or more objects to insert into the predicate as parameters. - /// An + ///whose elements are the result of invoking a projection string on each element of source. An ///whose elements are the result of invoking a projection string on each element of source. /// /// var users = queryable.Select(typeof(User), "new (Username, Pwd as Password)"); @@ -1363,7 +1363,7 @@ public static IQueryableSelectMany ([NotNull] this IQueryable return source.Provider.CreateQuery (optimized); } - /// + /// public static IQueryable SelectMany ([NotNull] this IQueryable source, [NotNull] string selector, params object[] args) { return SelectMany (source, null, selector, args); @@ -1398,7 +1398,7 @@ public static IQueryable SelectMany([NotNull] this IQueryable source, [CanBeNull return SelectMany(source, collectionSelector, resultSelector, "x", "y", collectionSelectorArgs, resultSelectorArgs); } - /// + /// public static IQueryable SelectMany([NotNull] this IQueryable source, [NotNull] string collectionSelector, [NotNull] string resultSelector, [CanBeNull] object[] collectionSelectorArgs = null, [CanBeNull] params object[] resultSelectorArgs) { return SelectMany(source, null, collectionSelector, resultSelector, "x", "y", collectionSelectorArgs, resultSelectorArgs); @@ -1912,6 +1912,7 @@ public static IQueryable Where([NotNull] this IQueryable source, [NotNull] strin /// /// A to filter. /// A cached Lambda Expression. + /// A public static IQueryable Where([NotNull] this IQueryable source, [NotNull] LambdaExpression lambda) { Check.NotNull(source, nameof(source)); diff --git a/src/System.Linq.Dynamic.Core/Parser/IExpressionPromoter.cs b/src/System.Linq.Dynamic.Core/Parser/IExpressionPromoter.cs index 3dac3764..6ec7dd886 100644 --- a/src/System.Linq.Dynamic.Core/Parser/IExpressionPromoter.cs +++ b/src/System.Linq.Dynamic.Core/Parser/IExpressionPromoter.cs @@ -16,7 +16,7 @@ public interface IExpressionPromoter /// Destionation data type to promote /// If the match must be exact /// Convert expression - ///that contains elements from the input sequence that satisfy the condition specified by LambdaExpression. + /// The promoted Expression Promote(Expression expr, Type type, bool exact, bool convertExpr); } }