2016-10-18 20 views
0

2つの文字列配列/値x、yを持ち、xにないyの値を取得しようとしています。私はxのすべての値がyにある場合にのみ、この値を取得しようとしています。Linqは、両方が同じ値を持つ場合、2つの文字列配列を比較します。

 string x = "CA ,WA"; 
     string y = "CA,WA,NY"; 
     var srcDetails = x.ToLower().Replace(" ", string.Empty).Split(','); 
     var dstDetails = y.ToLower().Replace(" ", string.Empty).Split(','); 

     var common = dstDetails.Intersect(srcDetails); //common in x,y 

     var destGreaterSrc= dstDetails.Except(srcDetails); //if y > x 

     var extraInDest = dstDetails.Except(common); 

extraInDestはNYとして出力するDESTに上記のコード余分な値のX

にないyの余分な値です。

私は、xの値がどのように我々はfalseにするvar extraInDest出力を行うことができます

string x = "CA ,NV"; 
    string y = "CA,WA,NY"; 

のようにyに等しいではないかもしれないシナリオを見つけようとしています。虚偽または

+1

あなたの文字列は常にCSVになりますか? –

+0

常にカンマで区切ります。 – Kurkula

+1

文字列x = "CA、WA"; 文字列y = "CA、WA、NY"; var srcDetails = x.Split( '、'); var dstDetails = y.Split( '、'); var extraInSrc = srcDetails.Where(s =>!dstDetails.Select(d => d.Trim()。ToLower())には(s.Trim()、ToLower()))が含まれます。if(extraInSrc.Count()<= 0)//すべてのX値がYにある場合 { var extraInDst = dstDetails.Where(s =>!srcDetails.Select(d => d.Trim()。ToLower ())。ToLow()))。ToList();)が含まれています。 } –

答えて

1

最も単純ヌル1のようになり結果のvar extraInDest = dstDetails.Exceptよう

(共通)

var extraInDest = srcDetails.Except(dstDetails).Any() 
    ? null 
    : dstDetails.Except(srcDetails); 
+0

@クルクラもそうですが、あなたを助けましたか? – grafgenerator

1

あなたの比較は常にブール値をもたらすべきである場合、これは、単純である必要があり、あなたはこれを使用する必要があります代わりに

bool extraInDest = srcDetails.All(v=>dstDetails.Contains(v));

関連する問題