diff --git a/Join-Object.ps1 b/Join-Object.ps1 index 63d6dce..c493d5f 100644 --- a/Join-Object.ps1 +++ b/Join-Object.ps1 @@ -366,7 +366,7 @@ function Join-Object { $ScriptRoot = '.' } if (!('MoreLinq.MoreEnumerable' -as [type])) { - Add-Type -Path (Resolve-Path -Path "$ScriptRoot\morelinq.*\lib\net451\MoreLinq.dll") + Add-Type -Path (Resolve-Path -Path "$ScriptRoot\morelinq.*\lib\netstandard2.0\MoreLinq.dll") } } catch { diff --git a/morelinq.3.0.0/lib/net451/MoreLinq.dll b/morelinq.3.0.0/lib/net451/MoreLinq.dll deleted file mode 100644 index d66ae98..0000000 Binary files a/morelinq.3.0.0/lib/net451/MoreLinq.dll and /dev/null differ diff --git a/morelinq.3.0.0/lib/netstandard1.0/MoreLinq.dll b/morelinq.3.0.0/lib/netstandard1.0/MoreLinq.dll deleted file mode 100644 index 7d472b7..0000000 Binary files a/morelinq.3.0.0/lib/netstandard1.0/MoreLinq.dll and /dev/null differ diff --git a/morelinq.3.0.0/lib/netstandard2.0/MoreLinq.dll b/morelinq.3.0.0/lib/netstandard2.0/MoreLinq.dll deleted file mode 100644 index ada40bd..0000000 Binary files a/morelinq.3.0.0/lib/netstandard2.0/MoreLinq.dll and /dev/null differ diff --git a/morelinq.3.0.0/morelinq.3.0.0.nupkg b/morelinq.3.0.0/morelinq.3.0.0.nupkg deleted file mode 100644 index 7aef15e..0000000 Binary files a/morelinq.3.0.0/morelinq.3.0.0.nupkg and /dev/null differ diff --git a/morelinq.3.2.0/.signature.p7s b/morelinq.3.2.0/.signature.p7s new file mode 100644 index 0000000..eff507c Binary files /dev/null and b/morelinq.3.2.0/.signature.p7s differ diff --git a/morelinq.3.2.0/COPYING.txt b/morelinq.3.2.0/COPYING.txt new file mode 100644 index 0000000..d9efc06 --- /dev/null +++ b/morelinq.3.2.0/COPYING.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + +============================================================================== +The following notice applies to a small portion of the code: + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/morelinq.3.2.0/lib/net451/MoreLinq.dll b/morelinq.3.2.0/lib/net451/MoreLinq.dll new file mode 100644 index 0000000..8a2f9ea Binary files /dev/null and b/morelinq.3.2.0/lib/net451/MoreLinq.dll differ diff --git a/morelinq.3.2.0/lib/net451/MoreLinq.pdb b/morelinq.3.2.0/lib/net451/MoreLinq.pdb new file mode 100644 index 0000000..7cf4bad Binary files /dev/null and b/morelinq.3.2.0/lib/net451/MoreLinq.pdb differ diff --git a/morelinq.3.0.0/lib/net451/MoreLinq.xml b/morelinq.3.2.0/lib/net451/MoreLinq.xml similarity index 90% rename from morelinq.3.0.0/lib/net451/MoreLinq.xml rename to morelinq.3.2.0/lib/net451/MoreLinq.xml index 1b9a116..79de6ed 100644 --- a/morelinq.3.0.0/lib/net451/MoreLinq.xml +++ b/morelinq.3.2.0/lib/net451/MoreLinq.xml @@ -27,6 +27,223 @@ This operator executes immediately. + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + Applies a right-associative accumulator function over a sequence. @@ -176,7 +393,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -783,7 +1005,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -796,6 +1019,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -831,6 +1054,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -868,6 +1092,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -1213,8 +1436,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. @@ -2043,6 +2291,44 @@ This operator uses deferred execution and streams its results. + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Inserts the elements of a sequence into another sequence at a @@ -2883,7 +3169,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -2919,11 +3207,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -3780,7 +4068,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -3828,6 +4116,50 @@ Transformation operation The scanned sequence + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + Peforms a right-associative scan (inclusive prefix) on a sequence of elements. @@ -5394,7 +5726,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5417,19 +5752,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5455,20 +5787,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -5497,19 +5825,14 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5531,9 +5854,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -5541,7 +5865,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5568,7 +5893,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -5577,7 +5903,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5607,103 +5934,312 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. - - - Represents options for a query whose results evaluate asynchronously. - - - - - The default options used for a query whose results evaluate - asynchronously. - - - - - Gets a positive (non-zero) integer that specifies the maximum - number of asynchronous operations to have in-flight concurrently - or null to mean unlimited concurrency. - - - - - Get the scheduler to be used for any workhorse task. - - - + - Get a Boolean that determines whether results should be ordered - the same as the source. + + Provides a set of static methods for querying objects that + implement . + + THE METHODS ARE EXPERIMENTAL. THEY MAY BE UNSTABLE AND + UNTESTED. THEY MAY BE REMOVED FROM A FUTURE MAJOR OR MINOR RELEASE AND + POSSIBLY WITHOUT NOTICE. USE THEM AT YOUR OWN RISK. THE METHODS ARE + PUBLISHED FOR FIELD EXPERIMENTATION TO SOLICIT FEEDBACK ON THEIR + UTILITY AND DESIGN/IMPLEMENTATION DEFECTS. - + - Returns new options with the given concurrency limit. + Applies two accumulator queries sequentially in a single + pass over a sequence. - - The maximum concurrent asynchronous operation to keep in flight. - Use null to mean unbounded concurrency. - Options with the new setting. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Returns new options with the given scheduler. + Applies three accumulator queries sequentially in a single + pass over a sequence. - - The scheduler to use to for the workhorse task. - Options with the new setting. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Returns new options with the given Boolean indicating whether or - not the results should be returned in the order of the source. + Applies four accumulator queries sequentially in a single + pass over a sequence. - - A Boolean where true means results are in source order and - false means that results can be delivered in order of - efficiency. - Options with the new setting. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Represents a sequence whose elements or results evaluate asynchronously. + Applies five accumulator queries sequentially in a single + pass over a sequence. - - The type of the source elements. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - The options that determine how the sequence evaluation behaves when - it is iterated. + Applies six accumulator queries sequentially in a single + pass over a sequence. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Returns a new query that will use the given options. + Applies seven accumulator queries sequentially in a single + pass over a sequence. - The new options to use. - - Returns a new query using the supplied options. - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - - Provides a set of static methods for querying objects that - implement . - - THE METHODS ARE EXPERIMENTAL. THEY MAY BE UNSTABLE AND - UNTESTED. THEY MAY BE REMOVED FROM A FUTURE MAJOR OR MINOR RELEASE AND - POSSIBLY WITHOUT NOTICE. USE THEM AT YOUR OWN RISK. THE METHODS ARE - PUBLISHED FOR FIELD EXPERIMENTATION TO SOLICIT FEEDBACK ON THEIR - UTILITY AND DESIGN/IMPLEMENTATION DEFECTS. + Applies eight accumulator queries sequentially in a single + pass over a sequence. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the result of the eighth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + @@ -5949,6 +6485,85 @@ (though never simultaneously) may iterate over the sequence. + + + Represents options for a query whose results evaluate asynchronously. + + + + + The default options used for a query whose results evaluate + asynchronously. + + + + + Gets a positive (non-zero) integer that specifies the maximum + number of asynchronous operations to have in-flight concurrently + or null to mean unlimited concurrency. + + + + + Get the scheduler to be used for any workhorse task. + + + + + Get a Boolean that determines whether results should be ordered + the same as the source. + + + + + Returns new options with the given concurrency limit. + + + The maximum concurrent asynchronous operation to keep in flight. + Use null to mean unbounded concurrency. + Options with the new setting. + + + + Returns new options with the given scheduler. + + + The scheduler to use to for the workhorse task. + Options with the new setting. + + + + Returns new options with the given Boolean indicating whether or + not the results should be returned in the order of the source. + + + A Boolean where true means results are in source order and + false means that results can be delivered in order of + efficiency. + Options with the new setting. + + + + Represents a sequence whose elements or results evaluate asynchronously. + + + The type of the source elements. + + + + The options that determine how the sequence evaluation behaves when + it is iterated. + + + + + Returns a new query that will use the given options. + + The new options to use. + + Returns a new query using the supplied options. + + Acquire extension. @@ -5969,6 +6584,226 @@ This operator executes immediately. + + Aggregate extension. + + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + AggregateRight extension. @@ -6120,7 +6955,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -6749,7 +7589,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6762,6 +7603,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6797,6 +7638,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -6834,6 +7676,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -7255,8 +8096,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. Fold extension. @@ -8009,6 +8875,47 @@ This operator uses deferred execution and streams its results. + + IndexBy extension. + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Insert extension. @@ -8762,7 +9669,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -8801,11 +9710,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -9529,7 +10438,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -9577,6 +10486,53 @@ Transformation operation The scanned sequence + + ScanBy extension. + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + ScanRight extension. @@ -11062,7 +12018,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -11085,19 +12044,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -11123,20 +12079,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -11165,13 +12117,7 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -11179,8 +12125,9 @@ - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11202,9 +12149,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -11212,7 +12160,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11239,7 +12188,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -11248,7 +12198,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11278,7 +12229,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -11409,6 +12361,28 @@ of an item to prepend, an item to append and the source. + + + Provides a set of static methods for writing in-memory queries over observable sequences. + + + + + Subscribes an element handler and a completion handler to an + observable sequence. + + Type of elements in . + Observable sequence to subscribe to. + + Action to invoke for each element in . + + Action to invoke upon exceptional termination of the + . + + Action to invoke upon graceful termination of . + The subscription, which when disposed, will unsubscribe + from . + The exception that is thrown for a sequence that fails a condition. diff --git a/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.dll b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.dll new file mode 100644 index 0000000..0641593 Binary files /dev/null and b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.dll differ diff --git a/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.pdb b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.pdb new file mode 100644 index 0000000..467a0e1 Binary files /dev/null and b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.pdb differ diff --git a/morelinq.3.0.0/lib/netstandard2.0/MoreLinq.xml b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.xml similarity index 90% rename from morelinq.3.0.0/lib/netstandard2.0/MoreLinq.xml rename to morelinq.3.2.0/lib/netstandard1.0/MoreLinq.xml index 1b9a116..d1fd925 100644 --- a/morelinq.3.0.0/lib/netstandard2.0/MoreLinq.xml +++ b/morelinq.3.2.0/lib/netstandard1.0/MoreLinq.xml @@ -27,6 +27,223 @@ This operator executes immediately. + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + Applies a right-associative accumulator function over a sequence. @@ -176,7 +393,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -783,7 +1005,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -796,6 +1019,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -831,6 +1054,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -868,6 +1092,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -1213,8 +1436,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. @@ -2043,6 +2291,44 @@ This operator uses deferred execution and streams its results. + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Inserts the elements of a sequence into another sequence at a @@ -2883,7 +3169,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -2919,11 +3207,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -3780,7 +4068,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -3828,6 +4116,50 @@ Transformation operation The scanned sequence + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + Peforms a right-associative scan (inclusive prefix) on a sequence of elements. @@ -4634,66 +4966,6 @@ resulting array. - - - Appends elements in the sequence as rows of a given object. - - The type of the elements of . - - The source. - - - A or subclass representing the source. - - This operator uses immediate execution. - - - - Appends elements in the sequence as rows of a given - object with a set of lambda expressions specifying which members (property - or field) of each element in the sequence will supply the column values. - - The type of the elements of . - The source. - Expressions providing access to element members. - - A representing the source. - - This operator uses immediate execution. - - - - Converts a sequence to a object. - - The type of the elements of . - The source. - - A representing the source. - - This operator uses immediate execution. - - - - Appends elements in the sequence as rows of a given - object with a set of lambda expressions specifying which members (property - or field) of each element in the sequence will supply the column values. - - The type of the elements of . - The type of the input and resulting object. - The source. - The type of object where to add rows - Expressions providing access to element members. - - A or subclass representing the source. - - This operator uses immediate execution. - - - - The resulting array may contain null entries and those represent - columns for which there is no source member supplying a value. - - Creates a delimited string from a sequence of values and @@ -5394,7 +5666,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5417,19 +5692,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5455,20 +5727,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -5497,19 +5765,14 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5531,9 +5794,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -5541,7 +5805,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5568,7 +5833,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -5577,7 +5843,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5607,91 +5874,13 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. - - - Represents options for a query whose results evaluate asynchronously. - - - - - The default options used for a query whose results evaluate - asynchronously. - - - - - Gets a positive (non-zero) integer that specifies the maximum - number of asynchronous operations to have in-flight concurrently - or null to mean unlimited concurrency. - - - - - Get the scheduler to be used for any workhorse task. - - - - - Get a Boolean that determines whether results should be ordered - the same as the source. - - - - - Returns new options with the given concurrency limit. - - - The maximum concurrent asynchronous operation to keep in flight. - Use null to mean unbounded concurrency. - Options with the new setting. - - - - Returns new options with the given scheduler. - - - The scheduler to use to for the workhorse task. - Options with the new setting. - - - - Returns new options with the given Boolean indicating whether or - not the results should be returned in the order of the source. - - - A Boolean where true means results are in source order and - false means that results can be delivered in order of - efficiency. - Options with the new setting. - - - - Represents a sequence whose elements or results evaluate asynchronously. - - - The type of the source elements. - - - - The options that determine how the sequence evaluation behaves when - it is iterated. - - - - - Returns a new query that will use the given options. - - The new options to use. - - Returns a new query using the supplied options. - - @@ -5705,223 +5894,290 @@ UTILITY AND DESIGN/IMPLEMENTATION DEFECTS. - + - Converts a query whose results evaluate asynchronously to use - sequential instead of concurrent evaluation. + Applies two accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The source sequence. - The converted sequence. - - - - Returns a query whose results evaluate asynchronously to use a - concurrency limit. - - The type of the source elements. - The source sequence. - - - A query whose results evaluate asynchronously using the given - concurrency limit. - - - - Returns a query whose results evaluate asynchronously and - concurrently with no defined limitation on concurrency. - - The type of the source elements. - The source sequence. - - A query whose results evaluate asynchronously using no defined - limitation on concurrency. - - - - Returns a query whose results evaluate asynchronously and uses the - given scheduler for the workhorse task. - - The type of the source elements. - The source sequence. - The scheduler to use. - - A query whose results evaluate asynchronously and uses the - given scheduler for the workhorse task. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Returns a query whose results evaluate asynchronously but which - are returned in the order of the source. + Applies three accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The source sequence. - - A query whose results evaluate asynchronously but which - are returned in the order of the source. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + - Internally, the asynchronous operations will be done concurrently - but the results will be yielded in order. + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + - + - Returns a query whose results evaluate asynchronously but which - are returned without guarantee of the source order. + Applies four accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The source sequence. - - A query whose results evaluate asynchronously but which - are returned without guarantee of the source order. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Returns a query whose results evaluate asynchronously and a Boolean - argument indicating whether the source order of the results is - preserved. + Applies five accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The source sequence. - - A Boolean where true means results are in source order and - false means that results can be delivered in order of - efficiency. - - A query whose results evaluate asynchronously and returns the - results ordered or unordered based on . - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Creates a sequence query that streams the result of each task in - the source sequence as it completes asynchronously. + Applies six accumulator queries sequentially in a single + pass over a sequence. - - The type of each task's result as well as the type of the elements - of the resulting sequence. - The source sequence of tasks. - - A sequence query that streams the result of each task in - as it completes asynchronously. - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + This operator executes immediately. - This method uses deferred execution semantics. The results are - yielded as each asynchronous task completes and, by default, - not guaranteed to be based on the source sequence order. If order - is important, compose further with - . - - This method starts a new task where the tasks are awaited. If the - resulting sequence is partially consumed then there's a good chance - that some tasks will be wasted, those that are in flight. - - The tasks in are already assumed to be in - flight therefore changing concurrency options via - , or - will only change how many - tasks are awaited at any given moment, not how many will be - kept in flight. For the latter effect, use the other overload. + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. - + - Creates a sequence query that streams the result of each task in - the source sequence as it completes asynchronously. A - is passed for each asynchronous - evaluation to abort any asynchronous operations in flight if the - sequence is not fully iterated. + Applies seven accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The type of the result elements. - The source sequence. - A function to begin the asynchronous - evaluation of each element, the second parameter of which is a - that can be used to abort - asynchronous operations. - - A sequence query that stream its results as they are - evaluated asynchronously. - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + This operator executes immediately. - This method uses deferred execution semantics. The results are - yielded as each asynchronous evaluation completes and, by default, - not guaranteed to be based on the source sequence order. If order - is important, compose further with - . - - This method starts a new task where the asynchronous evaluations - take place and awaited. If the resulting sequence is partially - consumed then there's a good chance that some projection work will - be wasted and a cooperative effort is done that depends on the - function (via a - as its second argument) to cancel - those in flight. - - The function should be designed to be - thread-agnostic. - - The task returned by should be started - when the function is called (and not just a mere projection) - otherwise changing concurrency options via - , or - will only change how many - tasks are awaited at any given moment, not how many will be - kept in flight. + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. - + - Awaits completion of all asynchronous evaluations irrespective of - whether they succeed or fail. An additional argument specifies a - function that projects the final result given the source item and - completed task. + Applies eight accumulator queries sequentially in a single + pass over a sequence. - The type of the source elements. - The type of the tasks's result. - The type of the result elements. - The source sequence. - A function to begin the asynchronous - evaluation of each element, the second parameter of which is a - that can be used to abort - asynchronous operations. - A fucntion that projects the final - result given the source item and its asynchronous completion - result. - - A sequence query that stream its results as they are - evaluated asynchronously. - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the result of the eighth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + This operator executes immediately. - This method uses deferred execution semantics. The results are - yielded as each asynchronous evaluation completes and, by default, - not guaranteed to be based on the source sequence order. If order - is important, compose further with - . - - This method starts a new task where the asynchronous evaluations - take place and awaited. If the resulting sequence is partially - consumed then there's a good chance that some projection work will - be wasted and a cooperative effort is done that depends on the - function (via a - as its second argument) to cancel - those in flight. - - The function should be designed to be - thread-agnostic. - - The task returned by should be started - when the function is called (and not just a mere projection) - otherwise changing concurrency options via - , or - will only change how many - tasks are awaited at any given moment, not how many will be - kept in flight. + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. @@ -5969,6 +6225,226 @@ This operator executes immediately. + + Aggregate extension. + + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + AggregateRight extension. @@ -6120,7 +6596,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -6749,7 +7230,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6762,6 +7244,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6797,6 +7279,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -6834,6 +7317,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -7255,8 +7737,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. Fold extension. @@ -8009,6 +8516,47 @@ This operator uses deferred execution and streams its results. + + IndexBy extension. + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Insert extension. @@ -8762,7 +9310,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -8801,11 +9351,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -9529,7 +10079,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -9577,6 +10127,53 @@ Transformation operation The scanned sequence + + ScanBy extension. + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + ScanRight extension. @@ -11062,7 +11659,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -11085,19 +11685,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -11123,20 +11720,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -11165,13 +11758,7 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -11179,8 +11766,9 @@ - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11202,9 +11790,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -11212,7 +11801,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11239,7 +11829,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -11248,7 +11839,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -11278,69 +11870,13 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. - - ToDataTable extension. - - - - Converts a sequence to a object. - - The type of the elements of . - The source. - - A representing the source. - - This operator uses immediate execution. - - - - Appends elements in the sequence as rows of a given - object with a set of lambda expressions specifying which members (property - or field) of each element in the sequence will supply the column values. - - The type of the elements of . - The source. - Expressions providing access to element members. - - A representing the source. - - This operator uses immediate execution. - - - - Appends elements in the sequence as rows of a given object. - - The type of the elements of . - - The source. - - - A or subclass representing the source. - - This operator uses immediate execution. - - - - Appends elements in the sequence as rows of a given - object with a set of lambda expressions specifying which members (property - or field) of each element in the sequence will supply the column values. - - The type of the elements of . - The type of the input and resulting object. - The source. - The type of object where to add rows - Expressions providing access to element members. - - A or subclass representing the source. - - This operator uses immediate execution. - Represents an list-like (indexable) data structure. @@ -11409,6 +11945,28 @@ of an item to prepend, an item to append and the source. + + + Provides a set of static methods for writing in-memory queries over observable sequences. + + + + + Subscribes an element handler and a completion handler to an + observable sequence. + + Type of elements in . + Observable sequence to subscribe to. + + Action to invoke for each element in . + + Action to invoke upon exceptional termination of the + . + + Action to invoke upon graceful termination of . + The subscription, which when disposed, will unsubscribe + from . + The exception that is thrown for a sequence that fails a condition. @@ -11435,13 +11993,5 @@ A message that describes the error. The exception that is the cause of the current exception. - - - Initializes a new instance of the class - with serialized data. - - The object that holds the serialized object data. - The contextual information about the source or destination. - diff --git a/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.dll b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.dll new file mode 100644 index 0000000..c8f5169 Binary files /dev/null and b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.dll differ diff --git a/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.pdb b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.pdb new file mode 100644 index 0000000..4864f4b Binary files /dev/null and b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.pdb differ diff --git a/morelinq.3.0.0/lib/netstandard1.0/MoreLinq.xml b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.xml similarity index 87% rename from morelinq.3.0.0/lib/netstandard1.0/MoreLinq.xml rename to morelinq.3.2.0/lib/netstandard2.0/MoreLinq.xml index 05ca752..79de6ed 100644 --- a/morelinq.3.0.0/lib/netstandard1.0/MoreLinq.xml +++ b/morelinq.3.2.0/lib/netstandard2.0/MoreLinq.xml @@ -27,6 +27,223 @@ This operator executes immediately. + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + Applies a right-associative accumulator function over a sequence. @@ -176,7 +393,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -783,7 +1005,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -796,6 +1019,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -831,6 +1054,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -868,6 +1092,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -1213,8 +1436,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. @@ -2043,6 +2291,44 @@ This operator uses deferred execution and streams its results. + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Inserts the elements of a sequence into another sequence at a @@ -2883,7 +3169,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -2919,11 +3207,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -3780,7 +4068,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -3828,6 +4116,50 @@ Transformation operation The scanned sequence + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + Peforms a right-associative scan (inclusive prefix) on a sequence of elements. @@ -4634,6 +4966,66 @@ resulting array. + + + Appends elements in the sequence as rows of a given object. + + The type of the elements of . + + The source. + + + A or subclass representing the source. + + This operator uses immediate execution. + + + + Appends elements in the sequence as rows of a given + object with a set of lambda expressions specifying which members (property + or field) of each element in the sequence will supply the column values. + + The type of the elements of . + The source. + Expressions providing access to element members. + + A representing the source. + + This operator uses immediate execution. + + + + Converts a sequence to a object. + + The type of the elements of . + The source. + + A representing the source. + + This operator uses immediate execution. + + + + Appends elements in the sequence as rows of a given + object with a set of lambda expressions specifying which members (property + or field) of each element in the sequence will supply the column values. + + The type of the elements of . + The type of the input and resulting object. + The source. + The type of object where to add rows + Expressions providing access to element members. + + A or subclass representing the source. + + This operator uses immediate execution. + + + + The resulting array may contain null entries and those represent + columns for which there is no source member supplying a value. + + Creates a delimited string from a sequence of values and @@ -5334,7 +5726,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5357,19 +5752,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -5395,20 +5787,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -5437,19 +5825,14 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5471,9 +5854,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -5481,7 +5865,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5508,7 +5893,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -5517,7 +5903,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -5547,7 +5934,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -5566,79 +5954,885 @@ UTILITY AND DESIGN/IMPLEMENTATION DEFECTS. - + - Creates a sequence that lazily caches the source as it is iterated - for the first time, reusing the cache thereafter for future - re-iterations. If the source is already cached or buffered then it - is returned verbatim. + Applies two accumulator queries sequentially in a single + pass over a sequence. - - Type of elements in . - The source sequence. - - Returns a sequence that corresponds to a cached version of the - input sequence. + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + - The returned will cache items from - in a thread-safe manner. Each thread can - call its to acquire an - iterator but the same iterator should not be used simultanesouly - from multiple threads. The sequence supplied in - is not expected to be thread-safe but it - is required to be thread-agnostic because different threads - (though never simultaneously) may iterate over the sequence. + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + - - Acquire extension. - - + - Ensures that a source sequence of - objects are all acquired successfully. If the acquisition of any - one fails then those successfully - acquired till that point are disposed. + Applies three accumulator queries sequentially in a single + pass over a sequence. - Type of elements in sequence. - Source sequence of objects. - - Returns an array of all the acquired - objects in source order. - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + - This operator executes immediately. + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + - - AggregateRight extension. + + + Applies four accumulator queries sequentially in a single + pass over a sequence. + + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + - + - Applies a right-associative accumulator function over a sequence. - This operator is the right-associative version of the - LINQ operator. + Applies five accumulator queries sequentially in a single + pass over a sequence. - The type of the elements of source. - Source sequence. - A right-associative accumulator function to be invoked on each element. - The final accumulator value. - - i.ToString()).AggregateRight((a, b) => string.Format("({0}/{1})", a, b)); - ]]> - The result variable will contain "(1/(2/(3/(4/5))))". - + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + - This operator executes immediately. + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + - + - Applies a right-associative accumulator function over a sequence. - The specified seed value is used as the initial accumulator value. - This operator is the right-associative version of the - LINQ operator. + Applies six accumulator queries sequentially in a single + pass over a sequence. + + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + + + + + Applies seven accumulator queries sequentially in a single + pass over a sequence. + + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + + + + + Applies eight accumulator queries sequentially in a single + pass over a sequence. + + The type of elements in . + The type of the result of the first accumulator. + The type of the result of the second accumulator. + The type of the result of the third accumulator. + The type of the result of the fourth accumulator. + The type of the result of the fifth accumulator. + The type of the result of the sixth accumulator. + The type of the result of the seventh accumulator. + The type of the result of the eighth accumulator. + The type of the accumulated result. + The source sequence + The first accumulator. + The second accumulator. + The third accumulator. + The fourth accumulator. + The fifth accumulator. + The sixth accumulator. + The seventh accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + An returned by an accumulator function + produced zero or more than a single aggregate result. + + + This operator executes immediately. + + Each accumulator argument is a function that receives an + , which when subscribed to, produces the + items in the sequence and in original + order; the function must then return an + that produces a single aggregate on completion (when + is called. An error is raised + at run-time if the returned by an + accumulator function produces no result or produces more than a + single result. + + + + + + Converts a query whose results evaluate asynchronously to use + sequential instead of concurrent evaluation. + + The type of the source elements. + The source sequence. + The converted sequence. + + + + Returns a query whose results evaluate asynchronously to use a + concurrency limit. + + The type of the source elements. + The source sequence. + + + A query whose results evaluate asynchronously using the given + concurrency limit. + + + + Returns a query whose results evaluate asynchronously and + concurrently with no defined limitation on concurrency. + + The type of the source elements. + The source sequence. + + A query whose results evaluate asynchronously using no defined + limitation on concurrency. + + + + Returns a query whose results evaluate asynchronously and uses the + given scheduler for the workhorse task. + + The type of the source elements. + The source sequence. + The scheduler to use. + + A query whose results evaluate asynchronously and uses the + given scheduler for the workhorse task. + + + + Returns a query whose results evaluate asynchronously but which + are returned in the order of the source. + + The type of the source elements. + The source sequence. + + A query whose results evaluate asynchronously but which + are returned in the order of the source. + + Internally, the asynchronous operations will be done concurrently + but the results will be yielded in order. + + + + + Returns a query whose results evaluate asynchronously but which + are returned without guarantee of the source order. + + The type of the source elements. + The source sequence. + + A query whose results evaluate asynchronously but which + are returned without guarantee of the source order. + + + + Returns a query whose results evaluate asynchronously and a Boolean + argument indicating whether the source order of the results is + preserved. + + The type of the source elements. + The source sequence. + + A Boolean where true means results are in source order and + false means that results can be delivered in order of + efficiency. + + A query whose results evaluate asynchronously and returns the + results ordered or unordered based on . + + + + + Creates a sequence query that streams the result of each task in + the source sequence as it completes asynchronously. + + + The type of each task's result as well as the type of the elements + of the resulting sequence. + The source sequence of tasks. + + A sequence query that streams the result of each task in + as it completes asynchronously. + + + + This method uses deferred execution semantics. The results are + yielded as each asynchronous task completes and, by default, + not guaranteed to be based on the source sequence order. If order + is important, compose further with + . + + This method starts a new task where the tasks are awaited. If the + resulting sequence is partially consumed then there's a good chance + that some tasks will be wasted, those that are in flight. + + The tasks in are already assumed to be in + flight therefore changing concurrency options via + , or + will only change how many + tasks are awaited at any given moment, not how many will be + kept in flight. For the latter effect, use the other overload. + + + + + + Creates a sequence query that streams the result of each task in + the source sequence as it completes asynchronously. A + is passed for each asynchronous + evaluation to abort any asynchronous operations in flight if the + sequence is not fully iterated. + + The type of the source elements. + The type of the result elements. + The source sequence. + A function to begin the asynchronous + evaluation of each element, the second parameter of which is a + that can be used to abort + asynchronous operations. + + A sequence query that stream its results as they are + evaluated asynchronously. + + + + This method uses deferred execution semantics. The results are + yielded as each asynchronous evaluation completes and, by default, + not guaranteed to be based on the source sequence order. If order + is important, compose further with + . + + This method starts a new task where the asynchronous evaluations + take place and awaited. If the resulting sequence is partially + consumed then there's a good chance that some projection work will + be wasted and a cooperative effort is done that depends on the + function (via a + as its second argument) to cancel + those in flight. + + The function should be designed to be + thread-agnostic. + + The task returned by should be started + when the function is called (and not just a mere projection) + otherwise changing concurrency options via + , or + will only change how many + tasks are awaited at any given moment, not how many will be + kept in flight. + + + + + + Awaits completion of all asynchronous evaluations irrespective of + whether they succeed or fail. An additional argument specifies a + function that projects the final result given the source item and + completed task. + + The type of the source elements. + The type of the tasks's result. + The type of the result elements. + The source sequence. + A function to begin the asynchronous + evaluation of each element, the second parameter of which is a + that can be used to abort + asynchronous operations. + A fucntion that projects the final + result given the source item and its asynchronous completion + result. + + A sequence query that stream its results as they are + evaluated asynchronously. + + + + This method uses deferred execution semantics. The results are + yielded as each asynchronous evaluation completes and, by default, + not guaranteed to be based on the source sequence order. If order + is important, compose further with + . + + This method starts a new task where the asynchronous evaluations + take place and awaited. If the resulting sequence is partially + consumed then there's a good chance that some projection work will + be wasted and a cooperative effort is done that depends on the + function (via a + as its second argument) to cancel + those in flight. + + The function should be designed to be + thread-agnostic. + + The task returned by should be started + when the function is called (and not just a mere projection) + otherwise changing concurrency options via + , or + will only change how many + tasks are awaited at any given moment, not how many will be + kept in flight. + + + + + + Creates a sequence that lazily caches the source as it is iterated + for the first time, reusing the cache thereafter for future + re-iterations. If the source is already cached or buffered then it + is returned verbatim. + + + Type of elements in . + The source sequence. + + Returns a sequence that corresponds to a cached version of the + input sequence. + + The returned will cache items from + in a thread-safe manner. Each thread can + call its to acquire an + iterator but the same iterator should not be used simultanesouly + from multiple threads. The sequence supplied in + is not expected to be thread-safe but it + is required to be thread-agnostic because different threads + (though never simultaneously) may iterate over the sequence. + + + + + Represents options for a query whose results evaluate asynchronously. + + + + + The default options used for a query whose results evaluate + asynchronously. + + + + + Gets a positive (non-zero) integer that specifies the maximum + number of asynchronous operations to have in-flight concurrently + or null to mean unlimited concurrency. + + + + + Get the scheduler to be used for any workhorse task. + + + + + Get a Boolean that determines whether results should be ordered + the same as the source. + + + + + Returns new options with the given concurrency limit. + + + The maximum concurrent asynchronous operation to keep in flight. + Use null to mean unbounded concurrency. + Options with the new setting. + + + + Returns new options with the given scheduler. + + + The scheduler to use to for the workhorse task. + Options with the new setting. + + + + Returns new options with the given Boolean indicating whether or + not the results should be returned in the order of the source. + + + A Boolean where true means results are in source order and + false means that results can be delivered in order of + efficiency. + Options with the new setting. + + + + Represents a sequence whose elements or results evaluate asynchronously. + + + The type of the source elements. + + + + The options that determine how the sequence evaluation behaves when + it is iterated. + + + + + Returns a new query that will use the given options. + + The new options to use. + + Returns a new query using the supplied options. + + + + Acquire extension. + + + + Ensures that a source sequence of + objects are all acquired successfully. If the acquisition of any + one fails then those successfully + acquired till that point are disposed. + + Type of elements in sequence. + Source sequence of objects. + + Returns an array of all the acquired + objects in source order. + + + This operator executes immediately. + + + + Aggregate extension. + + + + Applies two accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies three accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies four accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies five accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies six accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies seven accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + + Applies eight accumulators sequentially in a single pass over a + sequence. + + The type of elements in . + The type of first accumulator value. + The type of second accumulator value. + The type of third accumulator value. + The type of fourth accumulator value. + The type of fifth accumulator value. + The type of sixth accumulator value. + The type of seventh accumulator value. + The type of eighth accumulator value. + The type of the accumulated result. + The source sequence + The seed value for the first accumulator. + The first accumulator. + The seed value for the second accumulator. + The second accumulator. + The seed value for the third accumulator. + The third accumulator. + The seed value for the fourth accumulator. + The fourth accumulator. + The seed value for the fifth accumulator. + The fifth accumulator. + The seed value for the sixth accumulator. + The sixth accumulator. + The seed value for the seventh accumulator. + The seventh accumulator. + The seed value for the eighth accumulator. + The eighth accumulator. + + A function that projects a single result given the result of each + accumulator. + The value returned by . + + This operator executes immediately. + + + + AggregateRight extension. + + + + Applies a right-associative accumulator function over a sequence. + This operator is the right-associative version of the + LINQ operator. + + The type of the elements of source. + Source sequence. + A right-associative accumulator function to be invoked on each element. + The final accumulator value. + + i.ToString()).AggregateRight((a, b) => string.Format("({0}/{1})", a, b)); + ]]> + The result variable will contain "(1/(2/(3/(4/5))))". + + + This operator executes immediately. + + + + + Applies a right-associative accumulator function over a sequence. + The specified seed value is used as the initial accumulator value. + This operator is the right-associative version of the + LINQ operator. The type of the elements of source. The type of the accumulator value. @@ -5761,7 +6955,12 @@ Type of elements in sequence. Source sequence. Count to assert. - Function that returns the object to throw. + + Function that receives a comparison (a negative integer if actual + count is less than and a positive integer + if actual count is greater than ) and + as arguments and which returns the + object to throw. Returns the original sequence as long it is contains the number of elements specified by . @@ -6390,7 +7589,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6403,6 +7603,9 @@ A sequence that contains elements of the two input sequences, combined by . + + The input sequences are of different lengths. + - - If the two input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence. Type of elements in second sequence. @@ -6438,6 +7638,9 @@ A sequence that contains elements of the three input sequences, combined by . + + The input sequences are of different lengths. + - If the three input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. An exception is thrown + if the input sequences are of different lengths. Type of elements in first sequence Type of elements in second sequence @@ -6475,6 +7676,9 @@ A sequence that contains elements of the four input sequences, combined by . + + The input sequences are of different lengths. + - - If the four input sequences are of different lengths then - is thrown. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -6896,8 +8096,33 @@ and all nested sequences for which the predicate function returned true. - is null. - is null. + + is null. + + is null. + + + + Flattens a sequence containing arbitrarily-nested sequences. An + additional parameter specifies a function that projects an inner + sequence via a property of an object. + + The sequence that will be flattened. + + A function that receives each element of the sequence as an object + and projects an inner sequence to be flattened. If the function + returns null then the object argument is considered a leaf + of the flattening process. + + + A sequence that contains the elements of + and all nested sequences projected via the + function. + + + is null. + + is null. Fold extension. @@ -7650,6 +8875,47 @@ This operator uses deferred execution and streams its results. + + IndexBy extension. + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + + + + Applies a key-generating function to each element of a sequence and + returns a sequence that contains the elements of the original + sequence as well its key and index inside the group of its key. + An additional parameter specifies a comparer to use for testing the + equivalence of keys. + + Type of the source sequence elements. + Type of the projected key. + Source sequence. + + Function that projects the key given an element in the source sequence. + + The equality comparer to use to determine whether or not keys are + equal. If null, the default equality comparer for + is used. + + A sequence of elements paired with their index within the key-group. + The index is the key and the element is the value of the pair. + + Insert extension. @@ -8403,7 +9669,9 @@ The type of the elements of . The sequence to pad. The width/length below which to pad. - Function to calculate padding. + + Function to calculate padding given the index of the missing element. + Returns a sequence that is at least as wide/long as the width/length specified by the parameter. @@ -8442,11 +9710,11 @@ a + b); + var source = new[] { "a", "b", "c", "d" }; + var result = source.Pairwise((a, b) => a + b); ]]> The result variable, when iterated over, will yield - 579 and 1245, in turn. + "ab", "bc" and "cd", in turn. @@ -9170,7 +10438,7 @@ - Peforms a scan (inclusive prefix sum) on a sequence of elements. + Performs a scan (inclusive prefix sum) on a sequence of elements. An inclusive prefix sum returns an equal-length sequence where the @@ -9218,6 +10486,53 @@ Transformation operation The scanned sequence + + ScanBy extension. + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + + A sequence of keys paired with intermediate accumulator states. + + + + + Applies an accumulator function over sequence element keys, + returning the keys along with intermediate accumulator states. An + additional parameter specifies the comparer to use to compare keys. + + Type of the elements of the source sequence. + The type of the key. + Type of the state. + The source sequence. + + A function that returns the key given an element. + + A function to determine the initial value for the accumulator that is + invoked once per key encountered. + + An accumulator function invoked for each element. + The equality comparer to use to determine + whether or not keys are equal. If null, the default equality + comparer for is used. + + A sequence of keys paired with intermediate accumulator states. + + ScanRight extension. @@ -10703,7 +12018,10 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -10726,19 +12044,16 @@ "2B", "3C", "0D" in turn. - - If the two input sequences are of different lengths then the result - sequence will always be as long as the longer of the two input - sequences. The default value of the shorter sequence element type - is used for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence. Type of elements in second sequence. @@ -10764,20 +12079,16 @@ "2Bb", "3Cc", "0Dd", "0e" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. This operator uses deferred execution and streams its - results. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + will always be as long as the longest of input sequences where the + default value of each of the shorter sequence element types is used + for padding. Type of elements in first sequence Type of elements in second sequence @@ -10806,13 +12117,7 @@ "2BbFalse", "3CcTrue", "0DdFalse", "0eTrue", "0\0False" in turn. - - If the input sequences are of different lengths then the result - sequence will always be as long as the longest of input sequences. - The default value of the each shorter sequence element type is used - for padding. - - This operator uses deferred execution and streams its results. + This operator uses deferred execution and streams its results. @@ -10820,8 +12125,9 @@ - Returns a projection of tuples, where each tuple contains the N-th element - from each of the argument sequences. + Returns a projection of tuples, where each tuple contains the N-th + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -10843,9 +12149,10 @@ - If the two input sequences are of different lengths, the result - sequence is terminated as soon as the shortest input sequence is - exhausted. + If the input sequences are of different lengths, the result sequence + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. + This operator uses deferred execution and streams its results. @@ -10853,7 +12160,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -10880,7 +12188,8 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. @@ -10889,7 +12198,8 @@ Returns a projection of tuples, where each tuple contains the N-th - element from each of the argument sequences. + element from each of the argument sequences. The resulting sequence + is as short as the shortest input sequence. Type of elements in first sequence. Type of elements in second sequence. @@ -10919,12 +12229,70 @@ If the input sequences are of different lengths, the result sequence - is terminated as soon as the shortest input sequence is exhausted. + is terminated as soon as the shortest input sequence is exhausted + and remainder elements from the longer sequences are never consumed. This operator uses deferred execution and streams its results. + + ToDataTable extension. + + + + Converts a sequence to a object. + + The type of the elements of . + The source. + + A representing the source. + + This operator uses immediate execution. + + + + Appends elements in the sequence as rows of a given + object with a set of lambda expressions specifying which members (property + or field) of each element in the sequence will supply the column values. + + The type of the elements of . + The source. + Expressions providing access to element members. + + A representing the source. + + This operator uses immediate execution. + + + + Appends elements in the sequence as rows of a given object. + + The type of the elements of . + + The source. + + + A or subclass representing the source. + + This operator uses immediate execution. + + + + Appends elements in the sequence as rows of a given + object with a set of lambda expressions specifying which members (property + or field) of each element in the sequence will supply the column values. + + The type of the elements of . + The type of the input and resulting object. + The source. + The type of object where to add rows + Expressions providing access to element members. + + A or subclass representing the source. + + This operator uses immediate execution. + Represents an list-like (indexable) data structure. @@ -10993,6 +12361,28 @@ of an item to prepend, an item to append and the source. + + + Provides a set of static methods for writing in-memory queries over observable sequences. + + + + + Subscribes an element handler and a completion handler to an + observable sequence. + + Type of elements in . + Observable sequence to subscribe to. + + Action to invoke for each element in . + + Action to invoke upon exceptional termination of the + . + + Action to invoke upon graceful termination of . + The subscription, which when disposed, will unsubscribe + from . + The exception that is thrown for a sequence that fails a condition. @@ -11019,5 +12409,13 @@ A message that describes the error. The exception that is the cause of the current exception. + + + Initializes a new instance of the class + with serialized data. + + The object that holds the serialized object data. + The contextual information about the source or destination. + diff --git a/morelinq.3.2.0/morelinq.3.2.0.nupkg b/morelinq.3.2.0/morelinq.3.2.0.nupkg new file mode 100644 index 0000000..5759971 Binary files /dev/null and b/morelinq.3.2.0/morelinq.3.2.0.nupkg differ