-6

私はこのコードを持っています:

private void test(List<string> a)
{

}

forループを使用して、リストに重複するアイテムがあるかどうかを確認します。次に、nullでマークします。

4

5 に答える 5

1

ここで何をしたいのか正確にはわかりませんが、リスト内の個別の値のコレクションを取得したい場合は、LINQを使用してこれを行うことができます。

var distinctOnes = a.Distinct();
于 2012-09-14T00:01:12.437 に答える
0

文字列をループし、新しい文字列をHashSetに入れて、繰り返しを効率的にチェックできるようにします。

var set = new HashSet<string>();
for (int i = 0; i < a.Count; i++) {
  if (set.Contains(a[i])) {
    // duplicate
    a[i] = null;
  } else {
    set.Add(a[i]);
  }
}
于 2012-09-14T00:02:06.787 に答える
0

副作用のあるメソッドSideEffectsAnswerは本当に避けるべきです。あなたはこのようにあなたが望むものを達成することができます:

private List<String> test(List<String> originalList)
{
    List<String> returnList = new ArrayList<String>();
    for (String value : originalList)
    {
        if (!returnList.contains(value))
        {
            returnList.add(value);
        }
    }
    return returnList;
}

本当に必要な場合は、このメソッドを簡単に修正してnullを追加することもできます(すでに追加されている場合は何も追加しないのではなく)...

于 2012-09-14T00:03:03.370 に答える
0
private bool HasDuplicates(List<string> a)
{
    return a.Distinct().Count() != a.Count();
}
于 2012-09-14T00:03:20.557 に答える
0

LINQを使用できます

var list = (from n in a select n).Distinct().ToList();

「a」に対してチェックできる一意のリストがあることを知ってください

于 2012-09-14T00:04:33.690 に答える