2017-06-14 51 views
-1

我在C#.net中有一個arrayList,其中包含下面的數據,所以我想檢查列表項中的3個項目的唯一性.uniqueness通過ID,日期,命名 「ID,日期時間,名稱,代碼」 ofcourse我只想日期時間的日期部分必須是唯一沒有日期和時間段如何檢查c#.net中的數組列表項的唯一性.net

"1;06/07/2017 11:17:16;out;0" 
"1;06/07/2017 11:27:16;out;2" 
"1;06/07/2017 11:28:16;out;0" 
"1;06/07/2017 11:20:16;out;3" 

所以我想不同的此ArrayList,因爲重複的日期和ID和出 請幫我解決這個問題。

+2

這真的不是代碼,這只是您的數據樣本。你已經嘗試了什麼? – maccettura

+0

親愛的maccettura:我找不到任何解決方案,這個問題 – Shayan

+0

所以[你什麼也沒有嘗試,你已經沒有想法](https://www.youtube.com/watch?v=QG8Yr5tkyTg&feature=youtu.be&t = 11S)? – maccettura

回答

1

最好的方法是使用LINQ。我強烈建議使用List<string>而不是ArrayList。您可以通過以下方式

using System.Collections; 
using System.Linq; 

ArrayList list = new ArrayList() { 
    "1;06/07/2017 11:17:16;out;0", 
    "1;06/07/2017 11:27:16;out;2", 
    "1;06/07/2017 11:28:16;out;0", 
    "1;06/07/2017 11:20:16;out;3" 
}; 

var distinctEnumerable = list.Cast<string>() 
    .GroupBy(x => { 
     var items = x.Split(';'); 
     var dateParts = items[1].Split(' '); 
     return string.Join(";", items[0], dateParts[0], items[2]); 
    }) 
    .Select(x => x.Key); 

做不同的,你可以轉換到IEnumerable<string>List<string>string[]或其他方便的容器,如果你想。

這裏的主要邏輯是,我用GroupBy這個List使用你需要區分的前3個部分,然後選擇組的Key,這會給我們提供清晰的列表。

Live Code Demo Here

+0

親愛的Vikhram:只有3個元素很重要。 ID,日期和字符串。如果這些項目是相同的。複製項目必須刪除 – Shayan

+0

@ Vikhram:OFcourse我想日期時間日期部分不是日期和時間 – Shayan

+0

@ Vikhram我測試你的代碼它返回2 items.but我期望只有1項,因爲項目是「 1; 06/07/2017 11:17:16; out; 0「 」1; 06/07/2017 11:27:16; out; 2「 」1; 2017-06-07 11:28:16 ; out; 0「 」1; 06/07/2017 11:20:16; out; 3「並且所有ID和日期部分和名稱相同 – Shayan