私は2つのリストを持ち、そのうちの1つに5つの要素があり、もう1つに4つの要素があります。彼らはいくつかの同じ要素を持っていますが、要素も異なっています。私はそれらの異なる要素でリストを作成したいと思います。どうすればいいですか?linqで2つのリストの項目を比較する方法はありますか?
注:5要素リストは私の主要なリストです。
私は2つのリストを持ち、そのうちの1つに5つの要素があり、もう1つに4つの要素があります。彼らはいくつかの同じ要素を持っていますが、要素も異なっています。私はそれらの異なる要素でリストを作成したいと思います。どうすればいいですか?linqで2つのリストの項目を比較する方法はありますか?
注:5要素リストは私の主要なリストです。
これはどうですか?この場合
var list1 = new List<int>(new []{1,2,3,4,5});
var list2 = new List<int>(new []{1,3,4});
var list3 = list1.Except(list2);
、list3
2及び5のみを含むであろう。
EDIT
あなたがユニークである両方のセットからの要素をしたい場合は、次のコードは十分です:
var list1 = new List<int>(new []{1,2,3,4,5});
var list2 = new List<int>(new []{1,3,4,7});
var list3 = list1.Except(list2).Union(list2.Except(list1));
ウィル出力2,5および7
すごく純粋です。ありがとう – cagin
これは実際のセットの違いではありません - シーケンス1のアイテムもシーケンス2に含まれているアイテムを除外するだけです(シーケンス1にないアイテムはシーケンス2に含まれません)。 –
Jason's answer in AakashMによる[質問のコメントで提供されるリンク](http://stackoverflow.com/questions/2404301/linq-find-differences-in-two-lists)は真の双方向セット差を生み出す方法を提供します。 –
あなたの場合不思議なことに、これの反対はと呼ばれます。交差点
string[] collection1 = new string[] { "1", "7", "4" };
string[] collection2 = new string[] { "6", "1", "7" };
var resultSet = collection1.Intersect<string>(collection2);
foreach (string s in resultSet)
{
Console.WriteLine(s);
}
[Linqは2つのリストの相違点を見つけました](http://stackoverflow.com/questions/2404301/linq-find-differences-in-two-lists) – AakashM