例えばリストに
Hello world hello world byeと入ってたとしてこれを素直にDistinctしてやると
Hello world hello byeとなって"Hello"と"hello"が残ってしまう。
感覚としてはlamda式を使って
mylist.Distinct((l,r) => l.ToLower() == r.ToLower());
としてやりたい感じだけど、この表記は受け付けてくれない。
Distinct関数はIEqualityComparerなるクラスを継承した比較オブジェクトを作ってやらないといけないらしい。なんて面倒なっ!
とネットを徘徊してたらカコイイコードを見つけたっ!
mylist.GroupBy(v1 => v1.ToLower()).Select(v2 => v2.First());
やべーかっこ良すぎる><
ネタ元は↓
c# - Distinct() with lambda? - Stack Overflow
速度面とかは置いといてこれなら気軽にメンバーの一部をID的に扱ってUniq化したオブジェクトのリストとかも簡単に作れそうだね
0 件のコメント:
コメントを投稿