web-dev-qa-db-ja.com

C#の2つのリスト間で個別のリストを取得する

文字列のリストが2つあります。それらの間の個別の値のリストを取得したり、最初のリストから2番目のリスト要素を削除したりするにはどうすればよいですか?

List<string> list1 = { "see","you","live"}

List<string> list2 = { "see"}

結果は{"you","live"}

16
kartal

必要なように見えます Enumerable.Except()

var differences = list1.Except(list2);

そして、違いをループすることができます:

foreach(var difference in differences)
{
    // work with each individual string here.
}
46
Justin Niessner

2番目のリストのアイテムを除いて、最初のリストからアイテムを取得する場合は、

list1.Except(list2)

最初のリストまたは2番目のリストにあるが、両方ではないアイテムを取得する場合は、次を使用できます。

list1.Except(list2).Concat(list2.Except(list1))
10
svick

これは私がユニークだと思う良い方法です。

2つのリストからユニーク

        var A = new List<int>() { 1,2,3,4 };
        var B = new List<int>() { 1, 5, 6, 7 };

       var a= A.Except(B).ToList();
        // outputs List<int>(2) { 2,3,4 }
       var b= B.Except(A).ToList();
        // outputs List<int>(2) { 5,6,7 }
       var abint=  B.Intersect(A).ToList();
        // outputs List<int>(2) { 1 }
1
Sanjay Dwivedi