9 implementations of IGrouping
Microsoft.CodeAnalysis (1)
Microsoft.Data.Analysis (1)
Microsoft.TemplateEngine.Utils (1)
System.Linq (2)
System.Linq.AsyncEnumerable (2)
System.Linq.Parallel (2)
434 references to IGrouping
aspire (9)
Aspire.Confluent.Kafka.Tests (1)
Aspire.Dashboard (4)
Aspire.Dashboard.Components.Tests (1)
Aspire.Hosting (2)
Aspire.Hosting.Azure (1)
Aspire.Hosting.RemoteHost (1)
dotnet (4)
GenerateDocumentationAndConfigFiles (4)
installer.tasks (1)
Microsoft.AspNetCore.App.Analyzers (2)
Microsoft.AspNetCore.Mvc.Core (2)
Microsoft.AspNetCore.Mvc.Razor (1)
Microsoft.AspNetCore.Razor.Utilities.Shared (1)
Microsoft.AspNetCore.Routing (6)
Microsoft.Build (1)
src\msbuild\artifacts\.packages\microsoft.codeanalysis.collections\5.0.0-1.25277.114\contentFiles\cs\net9.0\Extensions\IEnumerableExtensions.cs (1)
807foreach (var grouping in groups)
Microsoft.Build.Tasks.CodeAnalysis (1)
Microsoft.Build.Tasks.Core (2)
Microsoft.Build.Tasks.Git (1)
Microsoft.CodeAnalysis (25)
MetadataReader\MetadataHelpers.cs (11)
787IEnumerable<IGrouping<string, TypeDefinitionHandle>> typesByNS,
789[NotNull] out IEnumerable<IGrouping<string, TypeDefinitionHandle>>? types,
790[NotNull] out IEnumerable<KeyValuePair<string, IEnumerable<IGrouping<string, TypeDefinitionHandle>>>>? namespaces)
797var nestedTypes = new List<IGrouping<string, TypeDefinitionHandle>>();
804var nestedNamespaces = new List<KeyValuePair<string, IEnumerable<IGrouping<string, TypeDefinitionHandle>>>>();
813var pair = enumerator.Current;
820List<IGrouping<string, TypeDefinitionHandle>>? typesInLastChildNamespace = null;
876new KeyValuePair<string, IEnumerable<IGrouping<string, TypeDefinitionHandle>>>(
880typesInLastChildNamespace = new List<IGrouping<string, TypeDefinitionHandle>>();
894new KeyValuePair<string, IEnumerable<IGrouping<string, TypeDefinitionHandle>>>(
927nestedNamespaces[i] = default(KeyValuePair<string, IEnumerable<IGrouping<string, TypeDefinitionHandle>>>);
Microsoft.CodeAnalysis.Analyzers (4)
Microsoft.CodeAnalysis.AnalyzerUtilities (3)
Microsoft.CodeAnalysis.CodeStyle (6)
Microsoft.CodeAnalysis.CodeStyle.Fixes (10)
Microsoft.CodeAnalysis.CSharp (15)
Microsoft.CodeAnalysis.CSharp.CodeStyle (4)
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (6)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
110foreach (var group in groups)
Microsoft.CodeAnalysis.CSharp.Features (16)
Microsoft.CodeAnalysis.CSharp.Workspaces (1)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
110foreach (var group in groups)
Microsoft.CodeAnalysis.Extensions.Package (2)
Microsoft.CodeAnalysis.Features (27)
Microsoft.CodeAnalysis.Razor.Compiler (2)
Microsoft.CodeAnalysis.ResxSourceGenerator (3)
Microsoft.CodeAnalysis.Workspaces (16)
Microsoft.Data.Analysis (1)
Microsoft.Data.Analysis.Tests (2)
Microsoft.DotNet.ApiCompatibility (2)
Microsoft.DotNet.Build.Tasks.Packaging (6)
Microsoft.DotNet.HotReload.Watch (1)
Microsoft.DotNet.PackageValidation (2)
Microsoft.Extensions.DependencyModel (3)
Microsoft.Extensions.Logging.Generators (1)
Microsoft.Extensions.Options.SourceGeneration (1)
Microsoft.Gen.ComplianceReports (2)
Microsoft.Gen.ContextualOptions (2)
Microsoft.Gen.Logging (1)
Microsoft.Gen.MetadataExtractor (3)
Microsoft.Gen.Metrics (1)
Microsoft.Gen.MetricsReports (1)
Microsoft.Interop.ComInterfaceGenerator (1)
Microsoft.ML.AutoML (2)
Microsoft.ML.Fairlearn (1)
Microsoft.NET.Build.Tasks (8)
Microsoft.NET.Sdk.StaticWebAssets.Tasks (2)
Microsoft.TemplateEngine.Cli (10)
Microsoft.TemplateEngine.Edge (1)
Microsoft.TemplateEngine.IDE (3)
Microsoft.TemplateEngine.Utils (3)
Microsoft.TestPlatform.CrossPlatEngine (4)
netstandard (1)
NuGet.CommandLine.XPlat (3)
NuGet.Commands (6)
NuGet.Packaging (9)
NuGet.ProjectModel (1)
NuGet.Protocol (1)
NuGet.Resolver (1)
Roslyn.Diagnostics.Analyzers (4)
Roslyn.Diagnostics.CSharp.Analyzers (1)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
110foreach (var group in groups)
System.CommandLine.StaticCompletions (1)
System.Core (1)
System.Linq (38)
System\Linq\Grouping.cs (8)
12public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) =>
15public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey>? comparer)
35public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector) =>
38public static IEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey>? comparer)
238private sealed partial class GroupByIterator<TSource, TKey, TElement> : Iterator<IGrouping<TKey, TElement>>
256private protected override Iterator<IGrouping<TKey, TElement>> Clone() => new GroupByIterator<TSource, TKey, TElement>(_source, _keySelector, _elementSelector, _comparer);
293private sealed partial class GroupByIterator<TSource, TKey> : Iterator<IGrouping<TKey, TSource>>
309private protected override Iterator<IGrouping<TKey, TSource>> Clone() => new GroupByIterator<TSource, TKey>(_source, _keySelector, _comparer);
System\Linq\GroupJoin.cs (3)
21/// An <see cref="IEnumerable{T}"/> that contains elements of type <see cref="IGrouping{TOuter, TInner}"/>
28public static IEnumerable<IGrouping<TOuter, TInner>> GroupJoin<TOuter, TInner, TKey>(this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, IEqualityComparer<TKey>? comparer = null)
96private static IEnumerable<IGrouping<TOuter, TInner>> GroupJoinIterator<TOuter, TInner, TKey>(IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, IEqualityComparer<TKey>? comparer)
System\Linq\Lookup.cs (22)
64public interface ILookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>
138public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
262internal sealed class CollectionLookup<TKey, TElement> : Lookup<TKey, TElement>, ICollection<IGrouping<TKey, TElement>>, IReadOnlyCollection<IGrouping<TKey, TElement>>
266void ICollection<IGrouping<TKey, TElement>>.CopyTo(IGrouping<TKey, TElement>[] array, int arrayIndex)
288bool ICollection<IGrouping<TKey, TElement>>.Contains(IGrouping<TKey, TElement> item)
294bool ICollection<IGrouping<TKey, TElement>>.IsReadOnly => true;
295void ICollection<IGrouping<TKey, TElement>>.Add(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
296void ICollection<IGrouping<TKey, TElement>>.Clear() => throw new NotSupportedException();
297bool ICollection<IGrouping<TKey, TElement>>.Remove(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
302internal sealed class EmptyLookup<TKey, TElement> : ILookup<TKey, TElement>, ICollection<IGrouping<TKey, TElement>>, IReadOnlyCollection<IGrouping<TKey, TElement>>
309public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator() => Enumerable.Empty<IGrouping<TKey, TElement>>().GetEnumerator();
313public bool Contains(IGrouping<TKey, TElement> item) => false;
314public void CopyTo(IGrouping<TKey, TElement>[] array, int arrayIndex)
322public void Add(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
324public bool Remove(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
System.Linq.AsyncEnumerable (48)
System\Linq\GroupBy.cs (28)
22/// An <see cref="IAsyncEnumerable{IGrouping}"/> where each <see cref="IGrouping{TKey, TElement}"/>
27public static IAsyncEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>( // satisfies the C# query-expression pattern
36source.IsKnownEmpty() ? Empty<IGrouping<TKey, TSource>>() :
39static async IAsyncEnumerable<IGrouping<TKey, TSource>> Impl(
45foreach (IGrouping<TKey, TSource> item in await ToLookupAsync(source, keySelector, comparer, cancellationToken))
59/// An <see cref="IAsyncEnumerable{IGrouping}"/> where each <see cref="IGrouping{TKey, TElement}"/>
64public static IAsyncEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
73source.IsKnownEmpty() ? Empty<IGrouping<TKey, TSource>>() :
76static async IAsyncEnumerable<IGrouping<TKey, TSource>> Impl(
82foreach (IGrouping<TKey, TSource> item in await ToLookupAsync(source, keySelector, comparer, cancellationToken))
96/// <typeparam name="TElement">The type of the elements in the <see cref="IGrouping{TKey, TElement}"/>.</typeparam>
99/// <param name="elementSelector">A function to map each source element to an element in an <see cref="IGrouping{TKey, TElement}"/>.</param>
102/// An <see cref="IAsyncEnumerable{IGrouping}"/> where each <see cref="IGrouping{TKey, TElement}"/>
108public static IAsyncEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>( // satisfies the C# query-expression pattern
119source.IsKnownEmpty() ? Empty<IGrouping<TKey, TElement>>() :
122static async IAsyncEnumerable<IGrouping<TKey, TElement>> Impl(
129foreach (IGrouping<TKey, TElement> item in await ToLookupAsync(source, keySelector, elementSelector, comparer, cancellationToken))
143/// <typeparam name="TElement">The type of the elements in the <see cref="IGrouping{TKey, TElement}"/>.</typeparam>
146/// <param name="elementSelector">A function to map each source element to an element in an <see cref="IGrouping{TKey, TElement}"/>.</param>
149/// An <see cref="IAsyncEnumerable{IGrouping}"/> where each <see cref="IGrouping{TKey, TElement}"/>
155public static IAsyncEnumerable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
166source.IsKnownEmpty() ? Empty<IGrouping<TKey, TElement>>() :
169static async IAsyncEnumerable<IGrouping<TKey, TElement>> Impl(
176foreach (IGrouping<TKey, TElement> item in await ToLookupAsync(source, keySelector, elementSelector, comparer, cancellationToken))
289/// <typeparam name="TElement">The type of the elements in each <see cref="IGrouping{TKey, TElement}"/>.</typeparam>
293/// <param name="elementSelector">A function to map each source element to an element in an <see cref="IGrouping{TKey, TElement}"/>.</param>
343/// <typeparam name="TElement">The type of the elements in each <see cref="IGrouping{TKey, TElement}"/>.</typeparam>
347/// <param name="elementSelector">A function to map each source element to an element in an <see cref="IGrouping{TKey, TElement}"/>.</param>
System\Linq\GroupJoin.cs (8)
24/// An <see cref="IAsyncEnumerable{T}"/> that contains elements of type <see cref="IGrouping{TOuter, TInner}"/>
31public static IAsyncEnumerable<IGrouping<TOuter, TInner>> GroupJoin<TOuter, TInner, TKey>(
44outer.IsKnownEmpty() ? Empty<IGrouping<TOuter, TInner>>() :
47static async IAsyncEnumerable<IGrouping<TOuter, TInner>> Impl(
80/// An <see cref="IAsyncEnumerable{T}"/> that contains elements of type <see cref="IGrouping{TOuter, TInner}"/>
87public static IAsyncEnumerable<IGrouping<TOuter, TInner>> GroupJoin<TOuter, TInner, TKey>(
100outer.IsKnownEmpty() ? Empty<IGrouping<TOuter, TInner>>() :
103static async IAsyncEnumerable<IGrouping<TOuter, TInner>> Impl(
System\Linq\ToLookupAsync.cs (12)
220private sealed class EmptyLookup<TKey, TElement> : ILookup<TKey, TElement>, IList<IGrouping<TKey, TElement>>, IReadOnlyCollection<IGrouping<TKey, TElement>>
230public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator() => Enumerable.Empty<IGrouping<TKey, TElement>>().GetEnumerator();
236public bool Contains(IGrouping<TKey, TElement> item) => false;
238public void CopyTo(IGrouping<TKey, TElement>[] array, int arrayIndex)
247public int IndexOf(IGrouping<TKey, TElement> item) => -1;
249public void Add(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
253public IGrouping<TKey, TElement> this[int index]
259public void Insert(int index, IGrouping<TKey, TElement> item) => throw new NotSupportedException();
261public bool Remove(IGrouping<TKey, TElement> item) => throw new NotSupportedException();
330public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
System.Linq.Parallel (49)
System\Linq\Parallel\QueryOperators\Unary\GroupByQueryOperator.cs (19)
30UnaryQueryOperator<TSource, IGrouping<TGroupKey, TElement>>
69PartitionedStream<TSource, TKey> inputStream, IPartitionedStreamRecipient<IGrouping<TGroupKey, TElement>> recipient,
100IPartitionedStreamRecipient<IGrouping<TGroupKey, TElement>> recipient,
104PartitionedStream<IGrouping<TGroupKey, TElement>, TKey> outputStream =
105new PartitionedStream<IGrouping<TGroupKey, TElement>, TKey>(partitionCount, hashStream.KeyComparer, OrdinalIndexState.Shuffled);
119outputStream[i] = (QueryOperatorEnumerator<IGrouping<TGroupKey, TElement>, TKey>)(object)enumerator;
138IPartitionedStreamRecipient<IGrouping<TGroupKey, TElement>> recipient,
142PartitionedStream<IGrouping<TGroupKey, TElement>, TKey> outputStream =
143new PartitionedStream<IGrouping<TGroupKey, TElement>, TKey>(partitionCount, hashStream.KeyComparer, OrdinalIndexState.Shuffled);
158outputStream[i] = (QueryOperatorEnumerator<IGrouping<TGroupKey, TElement>, TKey>)(object)enumerator;
174internal override QueryResults<IGrouping<TGroupKey, TElement>> Open(QuerySettings settings, bool preferStriping)
187internal override IEnumerable<IGrouping<TGroupKey, TElement>> AsSequentialQuery(CancellationToken token)
193return (IEnumerable<IGrouping<TGroupKey, TElement>>)wrappedChild.GroupBy(_keySelector, _keyComparer);
222QueryOperatorEnumerator<IGrouping<TGroupKey, TElement>, TOrderKey>
256internal override bool MoveNext([MaybeNullWhen(false), AllowNull] ref IGrouping<TGroupKey, TElement> currentElement, [AllowNull] ref TOrderKey currentKey)
423QueryOperatorEnumerator<IGrouping<TGroupKey, TElement>, TOrderKey>
462internal override bool MoveNext([MaybeNullWhen(false), AllowNull] ref IGrouping<TGroupKey, TElement> currentElement, [AllowNull] ref TOrderKey currentKey)
697TGroupKey IGrouping<TGroupKey, TElement>.Key
749TGroupKey IGrouping<TGroupKey, TElement>.Key
System\Linq\Parallel\Utils\Lookup.cs (8)
39private readonly Dictionary<TKey, IGrouping<TKey, TElement>> _dict;
41private IGrouping<TKey, TElement>? _defaultKeyGrouping;
46_dict = new Dictionary<TKey, IGrouping<TKey, TElement>>(_comparer);
79IGrouping<TKey, TElement>? grouping;
111internal void Add(IGrouping<TKey, TElement> grouping)
127public IEnumerator<IGrouping<TKey, TElement>> GetEnumerator()
132foreach (IGrouping<TKey, TElement> grouping in _dict.Values)
145return ((IEnumerable<IGrouping<TKey, TElement>>)this).GetEnumerator();
System\Linq\ParallelEnumerable.cs (22)
1296public static ParallelQuery<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
1315public static ParallelQuery<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
1342public static ParallelQuery<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
1368public static ParallelQuery<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(
1414.Select<IGrouping<TKey, TSource>, TResult>(delegate (IGrouping<TKey, TSource> grouping) { return resultSelector(grouping.Key, grouping); });
1440return source.GroupBy<TSource, TKey>(keySelector, comparer).Select<IGrouping<TKey, TSource>, TResult>(
1441delegate (IGrouping<TKey, TSource> grouping) { return resultSelector(grouping.Key, grouping); });
1471.Select<IGrouping<TKey, TElement>, TResult>(delegate (IGrouping<TKey, TElement> grouping) { return resultSelector(grouping.Key, grouping); });
1502.Select<IGrouping<TKey, TElement>, TResult>(delegate (IGrouping<TKey, TElement> grouping) { return resultSelector(grouping.Key, grouping); });
5146ParallelQuery<IGrouping<TKey, TSource>> groupings = source.GroupBy(keySelector, comparer);
5150Debug.Assert(groupings is QueryOperator<IGrouping<TKey, TSource>>);
5151QueryOperator<IGrouping<TKey, TSource>>? op = groupings as QueryOperator<IGrouping<TKey, TSource>>;
5153IEnumerator<IGrouping<TKey, TSource>> input = (op == null) ? groupings.GetEnumerator() : op.GetEnumerator(ParallelMergeOptions.FullyBuffered);
5233ParallelQuery<IGrouping<TKey, TElement>> groupings = source.GroupBy(keySelector, elementSelector, comparer);
5237Debug.Assert(groupings is QueryOperator<IGrouping<TKey, TElement>>);
5238QueryOperator<IGrouping<TKey, TElement>>? op = groupings as QueryOperator<IGrouping<TKey, TElement>>;
5240IEnumerator<IGrouping<TKey, TElement>> input = (op == null) ? groupings.GetEnumerator() : op.GetEnumerator(ParallelMergeOptions.FullyBuffered);
System.Linq.Queryable (18)
System\Linq\Queryable.cs (16)
421/// An <see cref="IQueryable{T}"/> that contains elements of type <see cref="IGrouping{TOuter, TInner}"/>
429public static IQueryable<IGrouping<TOuter, TInner>> GroupJoin<TOuter, TInner, TKey>(this IQueryable<TOuter> outer, IEnumerable<TInner> inner, Expression<Func<TOuter, TKey>> outerKeySelector, Expression<Func<TInner, TKey>> innerKeySelector, IEqualityComparer<TKey>? comparer = null)
436return outer.Provider.CreateQuery<IGrouping<TOuter, TInner>>(
439new Func<IQueryable<TOuter>, IEnumerable<TInner>, Expression<Func<TOuter, TKey>>, Expression<Func<TInner, TKey>>, IEqualityComparer<TKey>, IQueryable<IGrouping<TOuter, TInner>>>(GroupJoin).Method,
1443public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector)
1448return source.Provider.CreateQuery<IGrouping<TKey, TSource>>(
1451new Func<IQueryable<TSource>, Expression<Func<TSource, TKey>>, IQueryable<IGrouping<TKey, TSource>>>(GroupBy).Method,
1456public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TSource, TElement>> elementSelector)
1462return source.Provider.CreateQuery<IGrouping<TKey, TElement>>(
1465new Func<IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>, IQueryable<IGrouping<TKey, TElement>>>(GroupBy).Method,
1470public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, IEqualityComparer<TKey>? comparer)
1475return source.Provider.CreateQuery<IGrouping<TKey, TSource>>(
1478new Func<IQueryable<TSource>, Expression<Func<TSource, TKey>>, IEqualityComparer<TKey>, IQueryable<IGrouping<TKey, TSource>>>(GroupBy).Method,
1483public static IQueryable<IGrouping<TKey, TElement>> GroupBy<TSource, TKey, TElement>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector, Expression<Func<TSource, TElement>> elementSelector, IEqualityComparer<TKey>? comparer)
1489return source.Provider.CreateQuery<IGrouping<TKey, TElement>>(
1492new Func<IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource, TElement>>, IEqualityComparer<TKey>, IQueryable<IGrouping<TKey, TElement>>>(GroupBy).Method,
VBCSCompiler (1)
vstest.console (1)
vstest.console.arm64 (1)