179
var list = new List<Data>{new Data("01/21/2017", "Math", "Pass"), new Data("06/02/2017", "Science", "Pass"), new Data("05/31/2018", "Math", "Fail"), new Data("06/28/2018", "Science", "Pass"), new Data("07/03/2018", "Math", "Pass"), new Data("07/19/2018", "Science", "Fail"), new Data("08/01/2018", "Math", "Fail"), new Data("09/13/2018", "Science", "Fail"), new Data("09/15/2018", "Math", "Fail"), new Data("10/01/2018", "Science", "Fail"), new Data("12/15/2019", "Math", "Pass"), new Data("10/11/2019", "Science", "Fail"), new Data("01/21/2017", "Math", "Pass"), new Data("06/02/2017", "Science", "Pass"), new Data("05/31/2018", "Math", "Fail"), new Data("06/28/2018", "Science", "Pass"), new Data("07/03/2018", "Math", "Pass"), new Data("07/19/2018", "Science", "Fail"), new Data("08/01/2018", "Math", "Fail"), new Data("09/13/2018", "Science", "Fail"), new Data("09/15/2018", "Math", "Fail"), new Data("10/01/2018", "Science", "Fail"), new Data("12/15/2019", "Math", "Pass"), new Data("10/11/2019", "Science", "Fail"), new Data("08/01/2018", "Math", "Fail"), new Data("09/13/2018", "Science", "Fail"), new Data("09/15/2018", "Math", "Fail"), new Data("10/01/2018", "Science", "Fail"), new Data("12/15/2019", "Math", "Pass"), new Data("10/11/2019", "Science", "Fail"), new Data("10/11/2019", "Science", "Fail"), new Data("01/21/2017", "Math", "Pass"), new Data("06/02/2017", "Science", "Pass"), new Data("05/31/2018", "Math", "Fail"), new Data("06/28/2018", "Science", "Pass"), new Data("07/03/2018", "Math", "Pass"), new Data("07/19/2018", "Science", "Fail"), new Data("08/01/2018", "Math", "Fail"), new Data("09/13/2018", "Science", "Fail"), };
1
using System;
2
using System.Collections;
3
using System.Collections.Generic;
4
using System.Linq;
5
6
public static class MyExtensions
7
{
8
public static IEnumerable<IGrouping<TKey, TSource>> ChunkBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
9
{
10
return source.ChunkBy(keySelector, EqualityComparer<TKey>.Default);
11
}
12
13
public static IEnumerable<IGrouping<TKey, TSource>> ChunkBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer)
14
{
15
const bool noMoreSourceElements = true;
16
var enumerator = source.GetEnumerator();
17
if (!enumerator.MoveNext())
18
{
19
yield break;
20
}
21
22
while (true)
23
{
24
var key = keySelector(enumerator.Current);
Cached Result