x行の長さになる可能性のある文字列のC#リストがあります。小さな例を以下に示します。A
複数回表示されないように、小さな個別のリストを取得する方法を知りたいです。このリストはコード用です。だからランダム。
list = {a,b,a,f,a,null,a,e,a,e}
LINQ を試してください ....より具体的には...リストが実際に string[] であることを考えると、これを行うことができます...
string[] list = {"a","b","a","f","a",null,"a","e","a","e"};
var distinctList = list.Distinct();
foreach (var str in distinctList)//Distinct list of values
{
Console.Write(str);
}
次を使用することもできますHashSet<T>
。
var set = new HashSet<string>(list);
古いリストを一意のリストに置き換えたい場合:
list = set.ToList();
HashSet<T>
には、見過ごされがちな便利で効率的な方法が数多くあります。
この
HashSet<T>
クラスは、高性能なセット操作を提供します。セットは、重複する要素を含まず、要素が特定の順序になっていないコレクションです。
「複数回表示されないように」更新A
リストには小文字が含まれているためa
、.NET がデフォルトで大文字と小文字を区別して比較することを知らないと仮定します。この方法で大文字と小文字を区別せずに比較できます。
var set = new HashSet<string>(list, StringComparer.OrdinalIgnoreCase);
次のように、distinct() キーワードを使用するだけです。
List<string> foo = new List<string> {"a","b","a","f", "a", null,"a" ,"e","a","e"};
foreach (var element in foo.Distinct())
{
element.Dump();
}
出力:
a
b
f
null
e
これは Linqpad で書かれています。Dump メソッドは使用できません