2013-07-23 52 views
2

我有一個小問題。我有一些數據庫表中的一些指標,如下所示: DB TableLINQ查詢(按組的項目)

我想獲取RED組列表,最後得到每個組的開始和結束(這是最簡單的部分)。你有什麼想法如何做到這一點?

+0

這是你的整個表格(寬度方向)? –

+0

您是否有更多關於您要過濾的數據庫中的數據? –

+0

你的模式是什麼? –

回答

1

您可以使用該擴展方法來創建滿足您的謂詞

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] 
+0

不像我想要的那麼好,但這會有所幫助。謝謝。 – Fka

+0

@FKA我改變了實現返回序列的條件(而不是分隔符)。因爲你提到列中有四個可能的值,所以我認爲你只需要'2'的值。順便說一句,你不能這樣做在服務器端 –

+1

謝謝。我不能在服務器端做到這一點,因爲應用程序必須使用無法更改的現有資源。非常感謝!來自我的大啤酒! (或者你想要的伏特加:P,我們不是相距甚遠) – Fka