LINQ, cartesian join. Проблема с null
От: __kain Россия  
Дата: 27.06.09 22:32
Оценка:
Доброго времени суток! Есть код, суть которого — перебрать все соединения элементов трех массивов:
class Program
{
    static void Main(string[] args)
    {
        var array1 = new[] { "a", "b", "c" };
        var array2 = new[] { "1", "2" };
        var array3 = new[] { "|", "_" };

        var result_set =
            from a1 in array1
            from a2 in array2
            from a3 in array3
            select a1 + a2 + a3;

        foreach (var element in result_set)
        {
            Console.WriteLine(element);
        }
    }
}

Он выводит на экран:

a1|
a1_
a2|
a2_
b1|
b1_
b2|
b2_
c1|
c1_
c2|
c2_

Делаю изменение:
   class Program
    {
        static void Main(string[] args)
        {
            var array1 = new[] { "a", "b", "c" };
            var array2 = new[] { "1", "2" };
            var array3 = new[] { "|", "_" };

            Permutate(array1, null/*array2*/, array3);
        }

        static void Permutate(string[] array1, string[] array2, string[] array3)
        {
            var result_set =
                from a1 in array1
                from a2 in array2
                from a3 in array3
                select a1 + a2 + a3;

            foreach (var element in result_set)
            {
                Console.WriteLine(element);
            }
        }
    }

Как бы так сделать, чтоб если 1 из параметров == null, чтоб он просто не учитывался.

В Oracle все проще — cartesian join и все дела. Нет в таблице записей — ничего и не выбралось
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.