Я хочу преобразовать приведенный ниже код в LINQ
SELECT bpac.cmp FROM bpac
UNION
SELECT bpai.cmp FROM bpai
GROUP BY cmp
ORDER BY cmp DESC
Я пытаюсь получить первую таблицу, но получаю сообщение об ошибке:
List<string> listaBpac = modelOff.bpacs.Where(p => p.ibge == oUsuario.ibge)
.Select(p => new { p.cmp })
.ToList();
Ошибка:
Cannot implicitly convert type 'system.collections.generic.list "anonymous type: string cmp"' to 'system.collections.generic.list "anonymous type: string"'
Ваш sql неэффективен, потому что UNION уже удаляет дубликаты (в отличие от UNION ALL), вам не нужен GROUP BY.





Пытаться;
List<string> listaBpac = modelOff.bpacs.Where(p => p.ibge == oUsuario.ibge)
.Select(p => p.cmp)
.ToList();
(вам действительно не нужно ключевое слово "новое", если вы возвращаете строковый член)
Что-то вроде; Список <строка> listpai = modelOff.bpai.Select (p => p.cmp) .ToList (). Union (listaBpac);
С помощью
new { p.cmp }вы инициализируете анонимный тип, который имеет единственное свойствоcmpтипаstring. Но вы хотите заполнитьList<string>, поэтому этот анонимный тип вам не нужен. Поэтому просто выберите это свойствоp.cmpнапрямую, без анонимного типа.