2016-10-18 2 views
0

У меня есть 2 строковых массива/значения x, y и пытаюсь получить значения y, которые не входят в x. Я пытаюсь получить это значение только в том случае, если все значения 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 это дополнительное значение у, которое не находится в х

В приведенном выше коде дополнительных значений в Dest, который выводится в Нью-Йорке.

Я пытаюсь найти сценарий, где значения й не могут быть равны у, как

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

как мы можем сделать вывод уага extraInDest лжи.

как вар extraInDest = dstDetails.Except (общий), в результате ложной или нулевым

+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())). ToList(); if (extraInSrc.Count() <= 0) // Если все значения X присутствуют в Y { var extraInDst = dstDetails.Where (s =>! SrcDetails.Select (d => d.Trim(). ToLower()) Содержит (s.Trim() ToLower())) ToList()...; } –

ответ

1

Самый простой один будет

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

@ Kurkula так помогает вам? – grafgenerator

1

Это должно быть простым, если ваше сравнение всегда должно приводить к логическому значению, вы должны использовать это вместо

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

Смежные вопросы