Есть ли в LINQ что-то вроде `continue` для обхода или пропуска итерации запроса?

Возьмем этот пример:

        int[] queryValues1 = new int[10] {0,1,2,3,4,5,6,7,8,9};
        int[] queryValues2 = new int[100]; // this is 0 to 100

        for (int i = 0; i < queryValues2.Length; i++)
        {
            queryValues2[i] = i;
        }

        var queryResult =
            from qRes1 in queryValues1
            from qRes2 in queryValues2
            where qRes1 * qRes2 == 12
            select new { qRes1, qRes2 };

        foreach (var result in queryResult)
        {
            textBox1.Text += result.qRes1 + " * " + result.qRes2 + " = 12" + Environment.NewLine;
        }

Очевидно, что этот код приведет к:

1 * 12 = 12
2 * 6 = 12
3 * 4 = 12
4 * 3 = 12
6 * 2 = 12

Но мне нужны только первые 3 строки. То есть Я не хочу, чтобы если 2*6 = 12, запрос проверял, не равно ли 6*2 12. Есть ли способ отфильтровать это в LINQ запросе или я должен сделать это в цикле foreach после этого?

Мой вопрос просто пример, чтобы показать, что я имею в виду. поэтому я хочу знать, как сделать такую вещь независимо от типа объекта, к которому делается запрос!

0
задан marc_s 18 December 2011 в 10:28
поделиться