Сравните 2 списка чисел в синтаксисе метода LINQ

У меня есть 2 списка номеров.

public int[] numbersA = { 0, 2, 4 };
public int[] numbersB = { 1, 3, 5 }; 

Мне нужен вывод, как показано ниже

ожидаемый результат

0 is less than 1
0 is less than 3
0 is less than 5

2 is less than 3
2 is less than 5

4 is less than 5

Как это возможно через LINQ Синтаксис метода?

4 ответа

Решение

С синтаксисом метода:

var result = numbersA.SelectMany(c => numbersB, (c, o) => new { c, o })
                     .Where(d => d.c < d.o)
                     .Select(v=>  v.c + "is less than"+ v.o);

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

Нет прямого способа достичь того, чего вы хотите, так как вы используете Array вместо List (List имеет ForEach)

Но если вы хотите с массивами, я предлагаю использовать Array.ForEach,

int[] numbersA = new int[] { 0, 2, 4 };
int[] numbersB = new int[] { 1, 3, 5 };

Array.ForEach(numbersA, x =>
{
    Array.ForEach(numbersB, y =>
    {
        if (x < y)
            Console.WriteLine(x + " is less than " + y);
    });
    Console.WriteLine(Environment.NewLine);
});

демонстрация

Попробуйте это:

int[] numbersA = { 0, 2, 4 };
int[] numbersB = { 1, 3, 5 };

var result = numbersA.Select(a => numbersB.Where(b => a < b)
                                          .Select(b => a + " is less than " + b))
                     .SelectMany(arr => arr)
                     .ToArray();

Хотя этот вопрос является не чем иным, как бесполезной бизнес-логикой, попытка выглядит забавно. Мое решение List.Foreach скорее, чем Linq, но это только в одном утверждении.

    static void Main(string[] args)
    {
        int[] numsA = { 0, 2, 4 };
        int[] numsB = { 1, 3, 5 };
        numsA.ToList().ForEach((a) =>
        {
            numsB.Where(b => b > a).ToList()
            .ForEach((x) =>
            {
                Console.WriteLine("{0}>{1}", a, x);
            });
        });
    }
Другие вопросы по тегам