当两个字符串具有相同的值时,Linq会比较2个字符串

时间:2016-10-18 04:41:16

标签: c# linq

我有2个字符串数组/值x,y,我正在尝试获取不在x中的y值。我试图仅在x的所有值也都在y的情况下才获得此值。

        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是y中的额外值,不在x

在上面的代码中,在dest中输出的额外值为NY。

我试图找到x的值可能不等于y的场景

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

我们如何将var extraInDest输出设为false。

类似于var extraInDest = dstDetails.Except(common)导致false或null

2 个答案:

答案 0 :(得分:1)

最简单的一个是

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

答案 1 :(得分:1)

这应该很简单,如果你的比较应该总是得到一个布尔值,你应该使用它来代替

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