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」のみが入力されます。
どうすればこのようなチェックを作成できますか?
Except LINQ拡張メソッドを使用してみてください。これは、最初のリストからのみアイテムを取得し、2番目のリストには存在しないアイテムです。以下に例を示します。
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
var inBoth = FirstList.Intersect(SecondList);
または、両方のリストの1つだけにある文字列を検出するには、 Enumerable.Except
:
var inFirstOnly = FirstList.Except(SecondList);
var inSecondOnly = SecondList.Except(FirstList);
ThirdList
を取得するには:
List<string> ThirdList = inSecondOnly.ToList();
この王様の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.