How to separate all consecutive Objects using Linq (C#)

后端 未结 6 728
长发绾君心
长发绾君心 2021-01-14 10:37

I have a List ... MyObject has a propert called LineId (integer)...

So, I need separate all consecutive LineId in List

6条回答
  •  滥情空心
    2021-01-14 11:39

    For good measure, how about a LINQ solution not implemented using LINQ:

    public static IEnumerable> GroupConsecutive(
            this IEnumerable source, Func keySelector) {
        if (source == null) throw new ArgumentNullException("source");
        if (keySelector == null) throw new ArgumentNullException("keySelector");
    
        var comparer = EqualityComparer.Default;
        var grouped = new List();
        using (var iter = source.GetEnumerator()) {
            if (!iter.MoveNext()) yield break;
            grouped.Add(iter.Current);
            var last = iter.Current;
            while (iter.MoveNext()) {
                if (!comparer.Equals(keySelector(iter.Current), keySelector(last))) {
                    yield return grouped.AsReadOnly();
                    grouped = new List();
                }
                grouped.Add(iter.Current);
                last = iter.Current;
            }
            yield return grouped.AsReadOnly();
        }
    }
    

提交回复
热议问题