簡體   English   中英

LINQ查詢(按項目組分組)

[英]LINQ query (group by groups of items)

我有一點問題。 我有一些指標的數據庫表,看起來像: 數據庫表

我想獲取RED組的列表,最后獲得每個組的開始和結束(這是最簡單的部分)。 你有什么想法嗎?

您可以使用此擴展方法來創建滿足您的謂詞的序列組

public static IEnumerable<IEnumerable<T>> GroupBySequence<T>(
    this IEnumerable<T> source, Func<T, bool> predicate)
{
    var iterator = source.GetEnumerator();
    List<T> group = new List<T>();
    while (iterator.MoveNext())
    {
        if (predicate(iterator.Current))
        {
            group.Add(iterator.Current);
            continue;
        }            

        if (group.Any())
        {                    
            yield return group;
            group = new List<T>();
        }
    }

    if (group.Any())
        yield return group;
}

用法:

int[] data = { 1, 2, 1, 2, 2, 2, 1 };
var groups = data.GroupBySequence(i => i == 2); // returns [2] and [2,2,2]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM