« MoreLINQ » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 63 : | Ligne 63 : | ||
items.ExceptBy(items2, x => x.Id); // 1 3 | items.ExceptBy(items2, x => x.Id); // 1 3 | ||
items.ExceptBy(items2, x => x.Name); // 2 2 | items.ExceptBy(items2, x => x.Name); // 2 2 | ||
</kode> | |||
== FallbackIfEmpty == | |||
Returns the elements of a sequence and falls back to another if the original sequence is empty. | |||
<kode lang='cs'> | |||
var integers = Array.Empty<int>(); | |||
integers.FallbackIfEmpty(new[] { 1, 2 }); | |||
integers.FallbackIfEmpty(1); // int[] { 1 } | |||
integers.FallbackIfEmpty(1, 2); // int[] { 1, 2 } | |||
</kode> | </kode> |
Version du 16 novembre 2020 à 21:13
Links
Add
dotnet add package MoreLINQ |
Operators
Aggregate
Batch
Batches the source sequence into sized buckets.
Enumerable .Range(1, 10) .Batch(3); // split the sequence into sequences of max length 3 // [1, 2, 3] // [4, 5, 6] // [7, 8, 9] // [10] |
Cartesian
Returns the Cartesian product of two or more sequences by combining each element from the sequences and applying a user-defined projection to the set.
new[] { "A", "B" } .Cartesian( new[] { 1, 2 }, (x, y) => $"{x}{y}"); // A1 // A2 // B1 // B2 |
DistinctBy
Returns all distinct elements of the given source, where "distinctness" is determined via a projection and the default equality comparer for the projected type.
var items = new[] { new { Id = 1, Name = "One" }, new { Id = 2, Name = "Two" }, new { Id = 3, Name = "One" }, new { Id = 2, Name = "Two again" } }; items.DistinctBy(x => x.Id); // 1 2 3 items.DistinctBy(x => x.Name); // 1 2 2 |
ExceptBy
Returns the set of elements in the first sequence which aren't in the second sequence, according to a given key selector.
var items2 = new[] { new { Id = 2, Name = "One" } }; items.ExceptBy(items2, x => x.Id); // 1 3 items.ExceptBy(items2, x => x.Name); // 2 2 |
FallbackIfEmpty
Returns the elements of a sequence and falls back to another if the original sequence is empty.
var integers = Array.Empty<int>(); integers.FallbackIfEmpty(new[] { 1, 2 }); integers.FallbackIfEmpty(1); // int[] { 1 } integers.FallbackIfEmpty(1, 2); // int[] { 1, 2 } |