« MoreLINQ » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 37 : Ligne 37 :
// 2 - 10
// 2 - 10
// 2 - 11
// 2 - 11
</kode>
== 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.
<kode lang='cs'>
var items = new[]
{
    new Item { Id = 1, Name = "One" },
    new Item { Id = 2, Name = "Two" },
    new Item { Id = 3, Name = "One" },
    new Item { Id = 2, Name = "Two again" }
};
items.DistinctBy(x => x.Id);  // 1 2 3
items.DistinctBy(x => x.Name); // 1 2 2
</kode>
</kode>

Version du 14 novembre 2020 à 22:49

Links

Add

Bash.svg
dotnet add package MoreLINQ

Operators

Aggregate

Batch

Batches the source sequence into sized buckets.

Cs.svg
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.

Cs.svg
Enumerable
    .Range(1, 2)
    .Cartesian(
        Enumerable.Range(10, 2),
        (x, y) => $"{x} - {y}");
// 1 - 10
// 1 - 11
// 2 - 10
// 2 - 11

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.

Cs.svg
var items = new[]
{
    new Item { Id = 1, Name = "One" },
    new Item { Id = 2, Name = "Two" },
    new Item { Id = 3, Name = "One" },
    new Item { Id = 2, Name = "Two again" }
};

items.DistinctBy(x => x.Id);   // 1 2 3
items.DistinctBy(x => x.Name); // 1 2 2