Linq-запрос: разность двух коллекций - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, интересует решение задачи с помощью Linq запроса (если это возможно). Необходимо получить разность двух коллекций
var a = new int[] {2,2,2,1};
var b = new int[] {2,1};
Результат должен быть {2, 2}; Собственно необходимость возникла при разбиении числа на простые множители. Решалось всё замечательно методом Exept, пока до меня не дошло, что 8 =2 * 2 * 2 или 12 =3 * 2 * 2 и методом Exept (3 * 2) и (2) уже не получить.

Решение задачи: «Linq-запрос: разность двух коллекций»

textual
Листинг программы
var combinations = Enumerable.Range(0, 1 << primeFactors.Count).
                                          Select(m => (Enumerable.Range(0, primeFactors.Count).
                                                                  Where(i => (m & (1 << i)) != 0).Select(i => primeFactors[i]))).
                                          Where(y => y.Count() > 0).
                                          Select(x => new
                                          {
                                              FirstParam = x.Aggregate((a, b) => a * b),
                                              SecondParam = x.Count() == primeFactors.Count ? 1 : //primeFactors.Except(x).Aggregate((a, b) => a * b)
                                                getDif(primeFactors, x.ToList()).Aggregate((a, b) => a * b)
                                          } ).OrderByDescending(pair => pair.FirstParam);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5