Проблема в том, что вы делаете запрос к базе данных. И поставщик LINQ, который вы используете, на самом деле не выполняет ни одной из написанных вами операций. Он только пытается перевести весь ваш код в Select в запрос к базе данных. Очевидно, что он не может анализировать действительно сложные данные, как вы написали с помощью ToDictionary ().
Вы можете просто загрузить все данные из сущностей в память, а затем выполнить всю работу со словарем. Тогда ваш код будет фактически выполнен и должен работать.
Как:
List<SomeResult> test = from a in (from aa in _entities.TableA).AsEnumerable())
select new SomeResult
{
TestB = a.TableB.Name,
TestCDict = a.TableC.ToDictionary(x => x.SomeKey, x => x.SomeValue)
}).ToList();
Конечно, вы можете использовать фильтрацию на стороне БД во внутреннем запросе (до AsEnumerable ()), чтобы сузить объем данных, загружаемых в память.