通貨を含む文字列のリストがあります。たとえば、サイズは1000です。1000レコードのうちすべての一意の通貨の文字列の場合はリストが必要です。
今そのような-
INR
USD
JPY
USD
USD
INR
そして私は-のような文字列のリストが欲しい
INR
USD
JPY
唯一のユニークな記録
できればLinqを使用せずに
編集:
「できればLINQを使用せずに」という部分を見逃しました。.NetFramework2.0を使用している場合、またはLINQを使用したくない場合は、次のことを試してください。
List<string> list = new List<string> { "abc", "abc", "ab", "def", "abc", "def" };
list.Sort();
int i = 0;
while (i < list.Count - 1)
{
if (list[i] == list[i + 1])
list.RemoveAt(i);
else
i++;
}
使用するDistinct()
List<string> list = new List<string> { "abc", "abc", "ab", "def", "abc","def" };
List<string> uniqueList = list.Distinct().ToList();
アイテムuniqueList
が含まれます3
"abc","ab","def"
含めることを忘れないでください:using System.Linq;
上部に
HashSet<T>
あなたが探しているものです。参照MSDN:
この
HashSet<T>
クラスは、高性能のセット操作を提供します。セットは、重複する要素を含まず、要素の順序が特定されていないコレクションです。
アイテムがコレクションに追加された場合、HashSet<T>.Add(T item)
メソッドbool
は--を返すことに注意してください。アイテムがすでに存在していた場合。true
false
HashSetは、Linqを使用せずに.NET3.5以降を使用している場合に機能します。
var hash = new HashSet<string>();
var collectionWithDup = new [] {"one","one","two","one","two","zero"};
foreach (var str in collectionWithDup)
{
hash.Add(str);
}
// Here hash (of type HashSet) will be containing the unique list
.NET 3.5を使用していない場合は、次のコードを使用してください。
List<string> newList = new List<string>();
foreach (string s in list)
{
if (!newList.Contains(s))
newList.Add(s);
}
Distinct
独自の拡張メソッドを作成できます。
public static class ExtensionMethods
{
public static IEnumerable<T> Distinct<T>(this IEnumerable<T> list)
{
var distinctList = new List<T>();
foreach (var item in list)
{
if (!distinctList.Contains(item)) distinctList.Add(item);
}
return distinctList;
}
}
今、あなたはこれを行うことができます:
static void Main(string[] args)
{
var list = new List<string>() {"INR", "USD", "JPY", "USD", "USD", "INR"};
var distinctList = list.Distinct();
foreach(var item in distinctList) Console.WriteLine(item);
}
どちらが得られます:
INR
USD
JPY
これらをHashSetに保存して、そこから読み取ってみませんか。セットには、一意の値のみが含まれます。
これらの値をarrayまたはArrayListに格納しているとすると、次の2つの方法があります。
最初の方法
var UniqueValues = nonUnique.Distinct().ToArray();
2番目の方法
//create a test arraylist of integers
int[] arr = {1, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 7, 8, 8, 9, 9};
ArrayList arrList = new ArrayList(arr);
//use a hashtable to create a unique list
Hashtable ht = new Hashtable();
foreach (int item in arrList) {
//set a key in the hashtable for our arraylist value - leaving the hashtable value empty
ht.Item[item] = null;
}
//now grab the keys from that hashtable into another arraylist
ArrayList distincArray = new ArrayList(ht.Keys);