У меня такое ощущение, что заголовок вводит в заблуждение, отредактируйте его, если вы решите. когда я делаю это:условное поведение запроса linq
var q = (condition)?(from ...Select(..)): (from.. Select(..));
я получаю ошибку на ":" говорящий
Type of conditional expression could not be determined because
there is no implicit conversion between anonymous types.
Но если я не делаю:
var b = some base linq query;
var q = (condition)?(use b here one way):(use b here differently);
никаких жалоб. Зачем? Как второй способ отличается?
Edit:
Везде, мои окончательные прогнозы совпадают. (Final .Select (....) везде есть те же поля)
Edit2:
Я извиняюсь .. опечатка с моей стороны. Select() s везде не были одинаковыми. Метод 1 отлично работает, если соответствие прогнозов «
Вы выбираете одно и то же в обоих случаях? Это действительно поможет, если вы дадите нам короткий, но * полный * пример случая, который не работает. –
Хорошо, если вы поместите некоторые фактические значения в 'некоторый базовый запрос linq' и' from ... Select (..)) 'и т. Д., Люди смогут помочь. В противном случае это все догадки. В сообщении об ошибке четко указано, что он не видит никакого неявного преобразования между анонимным типом, возвращаемым первым выбором, и вторым выбором. В вашем последнем примере, предполагая, что у вас нет разных анонимных типов в 'use b here one way' и' use b here differently', он не дает этой ошибки. – publicgk
@JonSkeet Я как раз собирался это сказать, похоже, что ваши выборки * разные *. – mattytommo