2010-07-28 127 views
0

我有一個類有2個屬性(都是整數)並將類存儲到List集合中。查找vb.net中MultiDimensional List中的每個項目的計數?

Public Class GroupSelect 
Public Property RowNo() As Integer 
    Get 
     Return m_RowNo 
    End Get 
    Set(ByVal value As Integer) 
     m_RowNo = value 
    End Set 
End Property 
Private m_RowNo As Integer 
Public Property GroupNo() As Integer 
    Get 
     Return m_GroupNo 
    End Get 
    Set(ByVal value As Integer) 
     m_GroupNo = value 
    End Set 
End Property 
Private m_GroupNo As Integer 
End Class 

例:

RowNo  GroupNo 
1   1 
2   1 
4   2 

如何找到 「GroupNo」 每個項目都有超過ONE TIME。在上面的例子中2僅是一個時間,所以返回「FALSE」

RowNo  GroupNo 
1   1 
2   1 
4   2 
5   2 

在這裏,我需要返回‘True’(GroupNo。價值觀‘’也不是一成不變的,而不是在排序)。

哪有我們在vb.net中做到這一點嗎?

回答

0

所以,你要操作返回true如果有2個或更多RowNo值每GroupNo否則返回false?如果這是正確的,那麼下面的函數將會這樣做。

注意:由於您使用了C#標記,因此我覺得我有用C#發佈代碼的綠燈。

public static bool HasTwoOrMoreInEachGroup(IEnumerable<GroupSelect> enumerable) 
{ 
    var groups = new Dictionary<int, int>(); 
    foreach (GroupSelect item in enumerable) 
    { 
     int count = 0; 
     if (groups.TryGetValue(item.GroupNo, out count)) 
     { 
      groups[item.GroupNo] = count + 1; 
     } 
     else 
     { 
      groups.Add(item.GroupNo, 1); 
     } 
    } 
    foreach (int count in groups.Values) 
    { 
     if (count <= 1) 
     { 
      return false; 
     } 
    } 
    return true; 
} 

}

或者LINQ的解決方案......

bool result = list.GroupBy(x => x.GroupNo).Where(x => x.Count() == 1).Count() >= 2; 
0

我可能會誤解,但是RowNo和GroupNo是否有1對1的關係?RowNo的索引i是否總會與GroupNo的索引i進行比較?我們是否關心RowNo?

這聽起來像你問的問題是如何確定是否在GroupNo項目永遠不會重複。你的第一個例子只顯示2次(你想返回FALSE),第二個例子顯示兩次(你想返回TRUE)。

如果我們可以忽略RowNo,確定是否只列出一次的一種非常簡單的方法是對GroupNo進行排序,然後執行循環並檢查索引爲i的索引爲i + 1。您可以在循環中保留一個計數器,計數重複次數的次數。如果指數i不等於i + 1且計數器爲1,那麼您知道該數字從不重複。

我誤解了這個問題嗎?

+0

我使用RowNo從ArrayList中刪除的項目。它始終獨一無二。 – James123 2010-07-28 18:40:47

+0

如果RowNo充當增量主鍵並且GroupNo是數據,那麼我會將它們放入多維數組中。這樣,您可以刪除單個有序對(x,y),而不是從每個數組中刪除一個。如果你把它們分開,那麼有很大的錯誤空間。 這會讓我的解決方案變得更難一些,因爲在多維數組上排序並不那麼簡單,但是一旦概念仍然相同。一旦你的循環找到一個不重複的項目,只需返回false。 你什麼時候刪除值?這是根據布爾條件完成的嗎? – 2010-07-28 19:10:15

相關問題