19

List<string>の2つの違いを確認しようとしていc#ます。

例:

List<string> FirstList = new List<string>();
List<string> SecondList = new List<string>();

FirstListには、次の値が入力されます。

FirstList.Add("COM1");
FirstList.Add("COM2");

SecondListには、次の値が入力されます。

SecondList.Add("COM1");
SecondList.Add("COM2");
SecondList.Add("COM3");

SecondListここで、のいくつかの値がの値と等しいかどうかを確認したいと思いますFirstList

両方のリストにあるCOM1とCOM2のような等しい値がある場合は、それらをリストからフィルタリングし、残りの値を別のリストに追加します。

したがって、新しいを作成するThirdListと、他の値が重複しているため、「COM3」のみで埋められます。

どうすればそのようなチェックを作成できますか?

4

3 に答える 3

43

最初のリストからのみアイテムを取得し、2番目のリストには存在しないLINQ拡張メソッドを除いて使用してみてください。例を以下に示します。

List<string> ThirdList =  SecondList.Except(FirstList).ToList();

次のコードを使用して結果を印刷できます。

Console.WriteLine(string.Join(Environment.NewLine, ThirdList));

または

Debug.WriteLine(string.Join(Environment.NewLine, ThirdList));

注:以下を含めることを忘れないでください:using System.Diagnostics;

プリント:

COM3
于 2013-03-25T10:04:15.310 に答える
17

あなたが使用することができますEnumerable.Intersect

var inBoth = FirstList.Intersect(SecondList);

または、両方のリストのいずれかにのみ含まれる文字列を検出するには、Enumerable.Except

var inFirstOnly = FirstList.Except(SecondList);
var inSecondOnly = SecondList.Except(FirstList);

あなたを取得するにはThirdList

List<string> ThirdList = inSecondOnly.ToList();
于 2013-03-25T10:04:30.457 に答える
5

このreuqirementの王よりもあなたはExcept機能を利用することができます。

List<string> newlist =  List1.Except(List2).ToList();

または、これを行うことができるので、以下の1つは、list1とlist2では一般的ではないアイテムを含む新しいリスト3を作成します。

var common = List1.Intersect(List2);

var list3 = List1.Except(common ).ToList();
list3.AddRange(List2.Except(common ).ToList());

上記のものは、list1とlist2に次のような異なる項目がある場合に完全に役立ちます

List<string> list1= new List<string>();
List<string> list2 = new List<string>();

FirstListには、次の値が入力されます。

list1.Add("COM1");
list1.Add("COM2");
list1.Add("COM4");

SecondListには、次の値が入力されます。

list2 .Add("COM1");
list2 .Add("COM2");
list2 .Add("COM3");

上記のコードを使用してlist3 contains COM4 and COM3.

于 2013-03-25T10:04:49.610 に答える