2013-09-23 73 views
-1

我在尋找的是將重複項從idFAV中刪除,然後將其放入文本字​​段。有任何想法嗎?我正在研究C#2.0。刪除Arraylist C#2.0中的重複項

// main.cs

public void Page_Load(object sender, EventArgs e) 
    { 
     Session["FAVisible"] = new ArrayList(); 
    } 

// share.cs

public void Page_Load(object sender, EventArgs e) 
      { 
       ArrayList idFAV = (ArrayList)Session["FAVisible"]; 
       idFAV.Add(FileName)); 
       Session["FAVisible"] = idFAV; 

       for(int i=0; i < DisplayCount; i++) 
       { 
        FileAttachedVisible.Text = idFAV[i].ToString(); 
       } 

       } 
+2

?泛型集合在.Net 2.0和C#2.0中提供。 –

+0

列表中有什麼類型的對象? – Servy

回答

1

如果這是您正在使用的ArrayList的所有地方,那麼最簡單的解決方法是檢查idFAV包含FileName添加之前,你永遠不會有重複。或者,如果此數組列表正在某處修改,那麼您可以創建一個新的Arraylist,並循環遍歷idFAV中的所有項目,並僅當它不在新列表中時才添加。

+0

我如何將它從idFAV中刪除?我一直在網上找遍各處,找不到任何例子。 – user2800287

+0

你不必刪除它。你可以使用newList.Contains(obj)方法來檢查該條目是否已經存在 – appcoder

0

您可以嘗試構建新的ArrayList並檢查是否有任何要添加的新元素已經在該列表中。

ArrayList result = new ArrayList(); 

foreach(var elem in idFav) 
{ 
    if (!result.Contains(elem)) 
    { 
     result.Add(elem); 
    } 
} 

當然,這個解決方案的性能不是最好的(O(n^2))。嘗試玩Hashsets/dicitonaries並在O(n)中執行此操作會更好。

另外,爲了使這個工作在ArrayList中的對象需要實現Equals。如果FileName是字符串,則不需要擔心。

+0

var? CS0246:無法找到類型或名稱空間名稱'var'(您是否缺少using指令或程序集引用?) – user2800287

0

這是完成任務的一種方法。我相信它可以簡化,但我想要闡明這一過程中的每一步。

// Build ArrayList 
ArrayList al = new ArrayList(); 
al.Add(1); 
al.Add(1); 
al.Add(2); 
al.Add(2); 
al.Add(3); 
al.Add(4); 
al.Add(4); 
al.Add(4); 

// Create List from ArrayList 
List<object> oList = new List<object>(al.ToArray()); 

// Declare holder to distinct values 
List<object> distinctValues = new List<object>(); 

// Get distinct values 
oList.ForEach(delegate(object o) { 
    if (!distinctValues.Contains(o)) { 
     distinctValues.Add(o); 
    } 
}); 

// Copy original list as a list with duplicates 
List<object> duplicateValues = new List<object>(oList); 

// Remove the first instance of each distinct value 
// leaving all duplicates 
distinctValues.ForEach(delegate(object o){ 
    duplicateValues.Remove(o); 
}); 

// Display distinct values 
foreach (object o in distinctValues) { 
    MessageBox.Show(o.ToString(), "Distinct"); 
} 

// Display duplicate values 
foreach (object o in duplicateValues) { 
    MessageBox.Show(o.ToString(), "Duplicate"); 
} 
0

您不必刪除,如果你檢查一下前加... 例如:你爲什麼要使用`ArrayList`,而不是`名單 `

  foreach (var iMeter in meter) 
       { 
        if (!ip.Contains(iMeter.IP)) 
        { 
          ip.Add(iMeter.IP); 
         } 
       }