C#で大文字小文字が入り混じってる List
例えばリストに
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化したオブジェクトのリストとかも簡単に作れそうだね
2013年4月2日火曜日
C#で大文字小文字が入り混じってるListを大文字小文字無視してDistinctしたい
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿