2017-03-03 16 views
0

I持って2つのリスト、すなわち私のリスト1は、次の要素を持っている場合、リスト1とリスト2どのように二つのリストを比較し、C#でのミスマッチそれらを見つけるには?

は、この場合にそう

"element first is present here" 
"elements are present in second" 

"first", "second","third" 

と私のリスト2には、以下の要素を持っている、と仮定"first"と "second"という文字列がlist2に存在します(ただし、variablelistとまったく同じではありません)。

この場合、「first」と「second」を除いてどのようにして結果を表示できますか?「third」要素のみがlist2に存在しませんか?

私はあなたのサブストリングを検索する場合は、(Exceptのような)セットベースのアプローチを使用することはできません、次のコードにアドバンス

var inOnlyVariableList = list1.Except(list2).ToList(); 

おかげ

+0

をそして、何があなたのコードについて失敗しましたか? – BugFinder

+0

等価比較:[Enumerable.Except メソッド(IEnumerable 、IEnumerable 、IEqualityComparer )](https://msdn.microsoft.com/en-us/library/bb336390(v=vs.110))のバージョンを使用してください。 ASPX)クエリ@BugFinder – slawekwin

+0

は私にリスト1からすべての要素を返します。しかし、私は '' inOnlyVariableList'変数に格納するために '' 3番目の ''だけを欲しいです。 – Malai

答えて

5

を使用しています。だから、それはまだ読めるように効率的ではないですが:指定された文字列が長い文字列に含まれている場合

var inOnlyVariableList = list1.Where(s => !list2.Any(s2 => s2.Contains(s))).ToList(); 

String.Containsが見えます。

あなたが使用することができ、大文字小文字を区別しない比較をサポートしたい場合:

var inOnlyVariableList = list1 
    .Where(s => list2.All(s2 => s2.IndexOf(s, StringComparison.InvariantCultureIgnoreCase) == -1)) 
    .ToList(); 
+0

ありがとうございます。あなたの解決策は正しい結果をもたらします – Malai

関連する問題