1. ホーム
  2. c#

lambdaでlist<>から重複する値を削除する最速の方法

2023-09-24 06:14:20

質問

リストから重複する値を削除する最も速い方法は何でしょうか。 仮定 List<long> longs = new List<long> { 1, 2, 3, 4, 3, 2, 5 }; そこで、私はラムダを使って重複を除去し、返された: {1, 2, 3, 4, 5} . あなたの提案は何ですか?

どのように解決するのですか?

最も簡単な方法は 新しい のリストにすることでしょう。

List<long> unique = longs.Distinct().ToList();

これでいいのでしょうか、それとも突然変異で 既存 のリストを変更する必要がありますか?後者の方が圧倒的に長文になります。

注意点として Distinct() 保証付き は元の順序を保持することを保証しませんが、現在の実装では保持します - そしてそれは最も 自然な の実装です。私の に関するEdulinqブログの記事をご覧ください。 Distinct() をご覧ください。

必要ない場合は List<long> のままにしておけばいい。

IEnumerable<long> unique = longs.Distinct();

この時点では、繰り返し実行するたびに、重複排除が行われます。 unique を繰り返し実行することになりますが。それが良いか悪いかは、あなたの要件によります。