2017-09-18 22 views
-2

2文字列のリストを最初の単語から制御文字まで比較できますか?2文字列を比較制御文字までの最初の単語リスト

は、文字列があると言う -

"黄/高さ/幅の広い/白"

離れ使用してのあります -

newList = listOne.Except(listTwo).ToList(); 

しかし、唯一の最初の '/' までを比較する

ありがとうございました。

+1

あなただけ/ 'に分割することができ'と0のインデックスを比較する? – maccettura

答えて

1

非常に単純な方法は以下の通りです:

var result = list1.Where(str1 => !list2.Any(str2 => str2.Split('/')[0] == str1.Split('/')[0])); 

また、あなたがExceptを使用することができますが、それはカスタムIEqualityComparerを作成することが必要になります。

public class CustomStringComparer : IEqualityComparer<string> 
{ 
    public bool Equals(string x, string y) 
    { 
     // Ensure that neither string is null 
     if (!object.ReferenceEquals(x, null) && !object.ReferenceEquals(y, null)) 
     { 
      var x_split = x.Split('/'); 
      var y_split = y.Split('/'); 

      // Compare only first element of split strings 
      return x_split[0] == y_split[0]; 
     } 

     return false; 
    } 

    public int GetHashCode(string str) 
    { 
     // Ensure string is not null 
     if (!object.ReferenceEquals(str, null)) 
     { 
      // Return hash code of first element in split string 
      return str.Split('/')[0].GetHashCode(); 
     } 

     // Return 0 if null 
     return 0; 
    } 
} 

var result = list1.Except(list2, new CustomStringComparer()); 
関連する問題