Может ли кто-нибудь помочь мне с этим исключением? Я не понимаю, что это значит или как это исправить ... Это SqlException со следующим сообщением:
Все запросы, объединенные с использованием оператора UNION, INTERSECT или EXCEPT, должны иметь одинаковое количество выражений в своих целевых списках.
Я получаю его при выполнении запроса в псевдокоде, который выглядит следующим образом:
// Some filtering of data
var query = data.Subjects
.Where(has value)
.Where(has other value among some set of values);
// More filtering, where I need to have two different options
var a = query
.Where(some foreign key is null);
var b = query
.Where(some foreign key is not null)
.Where(and that foreign key has a property which is what I want);
query = a.Union(b);
// Final filter and then get result as a list
var list = query
.Where(last requirement)
.ToList();
Если я удаляю a.Union(b)
детали, он запускается без исключения. Так что я знаю, что ошибка есть. Но почему я это понимаю? И как я могу это исправить? Я делаю что-то слишком сумасшедшее здесь? Я неправильно понял, как использовать вещь Union
?
По сути, у меня есть несколько сущностей, которые имеют внешний ключ для какой-то другой сущности. И мне нужно получить все объекты, у которых либо внешний ключ установлен на null
, либо если этот внешний объект удовлетворяет некоторым требованиям.