2017-02-14 27 views
0

私は別にように、これらの個別の値を取得するために、これらの2つの文字列の配列を比較したい2つの文字列の配列ここ文字列配列で個別の値を取得するにはどうすればよいですか?

string[] oldname = ["arun","jack","tom"]; 
string[] newname = ["jack","hardy","arun"]; 

を持っています。これらを達成する方法を

oldname = ["tom"]; 
newname = ["hardy"]; 

...

+0

を使用すると、配列を使用する必要がありますか?リストを使用できますか? –

+0

両方のアレイが同じサイズで構成されていますか? –

+0

しかしあなたの結果は「別個の」値を表示しません...別名を求めるならば、「個別」 – A3006

答えて

3
string[] oldNameDistinct = oldname.Where(s => !newname.Contains(s)).ToArray(); 
string[] newNameDistinct = newname.Where(s => !oldname.Contains(s)).ToArray(); 
1

てみよう2つのアレイが以下のように定義された:

string[] oldname = new[] { "arun", "jack", "tom" }; 
string[] newname = new string[] { "jack", "hardy", "arun" }; 

次に、拡張メソッド.Exceptを使用して、探している結果を得ることができます。これを試してみてください、次のコードとworking example

var distinctInOld = oldname.Except(newname); 
var distinctInNew = newname.Except(oldname); 
+0

であるので、olnameとnewnameを現状どおりに印刷する必要があります。倍数がある場合はどうなりますか? –

+0

@MichaelBedford:申し訳ありませんが、私はあなたを手に入れません。入力の変更はどうなりますか?私の答えで追加したWorkingサンプルを試してみてください。 –

1

を考えてみましょう:

string[] oldname = new string[] { "arun", "jack", "tom" }; 
    string[] newname = new string[] { "jack", "hardy", "arun" }; 

    List<string> distinctoldname = new List<string>(); 
    List<string> distinctnewname = new List<string>(); 

    foreach (string txt in oldname) 
    { 
     if (Array.IndexOf(newname, txt) == -1) 
     distinctoldname.Add(txt); 
    } 

    foreach (string txt in newname) 
    { 
     if (Array.IndexOf(oldname, txt) == -1) 
      distinctnewname.Add(txt); 
    } 


    //here you can get both the arrays separately 

・ホープ、この助け:)

0
string[] oldname = new []{"arun","jack","tom"}; 
string[] newname = new []{"jack","hardy","arun"}; 

// use linq to loop through through each list and return values not included in the other list. 
var distinctOldName = oldname.Where(o => newname.All(n => n != o)); 
var distinctNewName = newname.Where(n => oldname.All(o => o != n)); 

distinctOldName.Dump(); // result is tom 
distinctNewName.Dump(); // result is hardy 
関連する問題