Эта строка кода имеет две проблемы:
return parsed_errorTranslator.TranslateToModel(result);
Во-первых, result
представляет собой набор объектов. Но метод TranslateToModel
ожидает один объект. Во-вторых, TranslateToModel
возвращает отдельный объект, но в этом методе вы ожидаете вернуть коллекцию объектов.
Яблоко и корзина яблок - это две совершенно разные вещи.
Звучит так, как будто вы хотите вызвать TranslateToModel
для каждого результата из данных и вернуть всю коллекцию. Вы должны быть в состоянии сделать это с помощью чего-то подобного:
return result.Select(r => parsed_errorTranslator.TranslateToModel(r)).ToList();
Это позволит выбрать все элементы в result
(которые семантически должны, вероятно, называться results
, чтобы избежать путаницы), вызывать этот метод для каждогоодин и вернуть полученный список.
Здесь нужно отметить одну вещь ... Поскольку вы уже вызываете .ToList()
в запросе перед этой строкой кода, все ваши записи уже находятся в памяти, поэтому все, что вы делаете, находится в коде. Это может привести к проблемам с производительностью при больших объемах данных. Просто перебрасывать .ToList()
с помощью LINQ - это скорее остановка, чем решение проблем.
Хотя это может работать в этом случае просто отлично, для больших объемов данных это означаетматериализация всех этих данных в память, где более динамичный подход к запросам данных поддержки может быть лучше. LINQ to Entities действительно хорош для упрощения такого подхода к динамическим запросам. Однако при переводе ваших деревьев выражений в код SQL (или какими-либо другими данными поддержки) он не сможет перевести TranslateToModel()
, поскольку это пользовательский C #.
Просто что-то, о чем следует помнить в будущем. , надеюсь, не проблема здесь.