和集合や差集合と云った、いわゆる「集合演算」を調べていたのですが、「そんな専門用語使われても分かんねーよ!」となったので、自分なりに分かりやすい言葉で解説します。
演算 | 説明 |
---|---|
和集合(Union) | コレクションAとコレクションB、両方の要素を含んだものを返します。(重複する要素を取り除きます) |
和集合(Concat) | コレクションAとコレクションB、両方の要素を含んだものを返します。(重複する要素を取り除かない) |
積集合(Intersect) | コレクションAとコレクションB、両方に含まれる要素のみを返します。 |
差集合(Except) | コレクションAから、コレクションBの要素を取り除いたものを返します。 |
一意な集合(Distinct) | コレクションから重複する要素を取り除いたものを返します。 |
和集合(Union, Concat)
コレクションAとコレクションB、両方の要素を含んだものを返します。
Unionは重複する要素を取り除きますが、Concatは重複する要素を取り除かない(コレクションAの後ろにコレクションBを結合するだけ)です。
int[] colloctionA = new int[] { 1, 2, 3, 4, 5 };
int[] collectionB = new int[] { 4, 5, 6, 7, 8, 9 };
// { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
IEnumerable<int> unionEnumerable = collectionA.Union(collectionB);
// { 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9}
IEnumerable<int> concatEnumerable = collectionA.Concat(collectionB);
積集合(Intersect)
コレクションAとコレクションB、両方に含まれる要素のみを返します。
int[] colloctionA = new int[] { 1, 2, 3, 4, 5 };
int[] collectionB = new int[] { 2, 4 };
// { 2, 4 }
IEnumerable<int> intersectEnumerable = collectionA.Intersect(collectionB);
差集合(Except)
コレクションAから、コレクションBの要素を取り除いたものを返します。
int[] colloctionA = new int[] { 1, 2, 3, 4, 5 };
int[] collectionB = new int[] { 2, 4 };
// { 1, 3, 5 }
IEnumerable<int> exceptEnumerable = collectionA.Except(collectionB);
一意な集合(Distinct)
コレクションから重複する要素を取り除いたものを返します。
int[] colloction = new int[] { 1, 2, 2, 3, 3, 4, 4, 4, 5 };
// { 1, 2, 3, 4, 5 }
IEnumerable<int> distinctEnumerable= collectionA.Distinct();