Получите симметричное различие от универсальных списков

Автоматическая генерация (M|m)akefiles заставляет меня волноваться о том, что Вы пытаетесь сделать здесь.

Вы понимаете то, что продолжается под покрытиями, когда Вы вводите, делают? Или gmake? Я только спрашиваю, потому что, если Вы не делаете, когда вещи повреждаются, такие как новые изменения кода, не включаемые в сборку, Вы испытаете затруднения при попытке работать, что произошло.

, Чтобы начать понимать делают, могу я предлагать иметь чтение" , Руководящие Проекты с GNU Делают " Robert Mecklenberg. Раннее покрытие глав, как делают, работает. Получение Ваших услышанных вокруг факта, которые делают, является обратным построением цепочки, одна из самых больших вещей, которые можно сделать.

, Если Вы не делаете, и Ваша система, кажется, работает, затем Вы будете, для использования термина Прагматически настроенных Программистов, " программирование по совпадению ". (-:

статьи BTW Great, доступные на их сайте! И я не связан с ними. YMMV. Yada-yada...

15
задан Michael Todd 5 November 2009 в 20:46
поделиться

6 ответов

You can use Except to get everything but the intersection of the two lists.

var differences = listA.Except(listB).Union(listB.Except(listA));

If you want to get everything but the union:

var allButUnion = new List<MyClass>();

(The union is everything in both lists - everything but the union is the empty set...)

17
ответ дан 1 December 2019 в 00:00
поделиться

If you mean the set of everything but the intersection (symmetric difference) you can try:

var set = new HashSet<Type>(list1);
set.SymmetricExceptWith(list2);
37
ответ дан 1 December 2019 в 00:00
поделиться

Do you mean everything that's only in one list or the other? How about:

var allButIntersection = a.Union(b).Except(a.Intersect(b));

That's likely to be somewhat inefficient, but it fairly simply indicates what you mean (assuming I've interpreted you correctly, of course).

7
ответ дан 1 December 2019 в 00:00
поделиться

Что-то вроде этого?

String[] one = new String[] { "Merry", "Metal", "Median", "Medium", "Malfunction", "Mean", "Measure", "Melt", "Merit", "Metaphysical", "Mental", "Menial", "Mend", "Find" };
            String[] two = new String[] { "Merry", "Metal", "Find", "Puncture", "Revise", "Clamp", "Menial" };

List<String> tmp = one.Except(two).ToList();
tmp.AddRange(two.Except(one));

String[] result = tmp.ToArray();
1
ответ дан 1 December 2019 в 00:00
поделиться
var theUnion = list1.Concat(list2);
var theIntersection = list1.Intersect(list2);
var theSymmetricDifference = theUnion.Except(theIntersection);
0
ответ дан 1 December 2019 в 00:00
поделиться

Use Except:

List<int> l1 = new List<int>(new[] { 1, 2, 3, 4 });
List<int> l2 = new List<int>(new[] { 2, 4 });
var l3 = l1.Except(l2);
-1
ответ дан 1 December 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: