normalian blog

Let's talk about Microsoft Azure, ASP.NET and Java!

簡単にLINQメモ

Exceptと Where句の違い

ExceptとWhereは、どちらもリストから要素を抽出するメソッドだ。メソッドの概要は似ているが、振る舞いが若干違うので備忘録としてメモする。

List<int> list1 = new List<int>(){ 3, 8, 5, 3, 30, 24 };
List<int> list2 = new List<int>(){ 30, 24 };
var result1 = list1.Where( n => list2.Contains( n ) );
=> 3, 8, 5, 3
var result2 = list1.Except( list2 );
=> 3, 8, 5

以下の動作をすることが確認できた。

  1. Except : 重複要素は削除する
  2. Where : 重複要素も区別せずに返す