Невозможно преобразовать ICollection в IEnumerableC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно преобразовать ICollection в IEnumerable

Сообщение Anonymous »

Я строю дерево выражений:


{x => x.principal_info.First().agent_for_property_info


Все работает так, как ожидалось.

На самом деле мне нужно преобразовать его в IEnumerable вместо ICollection, как вы можете видеть здесь.

Вот метод, который работает:

Код: Выделить всё

public Expression GetGenericExpression(bool first = false, params string[] properties)
{
var expression = GetNavigationPropertySelector(typeof(T), first, properties);

var expRight = (Expression)expression;

return expRight;
}
В выражении я получаю допустимое лямбда-выражение:


{x => x.principal_info.First().agent_for_property_info


Когда я провожу кастинг:

Код: Выделить всё

var expRight = (Expression)expression;
Я получаю исключение:

Код: Выделить всё

Unable to cast object of
type
'System.Linq.Expressions.Expression`1[System.Func`2[SomeModel1,
System.Collections.Generic.ICollection`1[SomeModel]]]'
to type
'System.Linq.Expressions.Expression`1[System.Func`2[SomeModel1
,System.Collections.Generic.IEnumerable`1[SomeModel]]]'.
Я знал, что ICollection наследует от IEnumerable, предполагая, что это довольно легко исправить.

Я много исследовал, но не нашел решения, как привести ICollection к IEnumerable и возможно ли это вообще?

Фактически, компилятор может привести его неявно, поскольку эти строки действительны:

Код: Выделить всё

var queryData1 = new QueryData()
{
WhereClause = expression,
SelectClause = info => info.principal_info.First().agent_for_property_info
};
Поскольку это выражение является типом ICollection:


info => info.principal_info.First().agent_for_property_info


Подробнее здесь: https://stackoverflow.com/questions/521 ... numerablet
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему Ilist реализуется как из ICollection, так и из IEnumerable, хотя ICollection: IEnumerable
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между ICollection и IEnumerable, почему мы определяем свойство навигации как ICollection в .NET Core? [дуб
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как объединить два IEnumerable в новый IEnumerable?
    Гость » » в форуме C#
    0 Ответы
    49 Просмотры
    Последнее сообщение Гость
  • Что необходимо передать для IEnumerable>>?
    Anonymous » » в форуме C#
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous
  • Невозможно вычислить Count для источника данных, который не реализует ICollection.
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»