无法强制转换System. collections . generic . list类型的对象.到System.Coll

本文关键字:System 类型 对象 Coll list collections 转换 generic | 更新日期: 2023-09-27 18:11:35

BindingProperties返回类型T. linq查询在运行时带来的结果是System.Collections.Generic.IList[ShortCodeList],但当我尝试使用IList T>进行类型转换时,它返回:

无法强制转换类型的对象' System.Collections.Generic.List& # x60; 1(系统。对象]'来键入"System.Collections.Generic.IList& # x60; 1 [ModelAccessLayer.Model.ShortCodeList]"

    private IList<T> GetResultSetConvertedToList<T>(IList<T> dataSet, IEnumerable<dynamic> resultSet) where T : class, new()
    {
        IList<T> customResult = (IList<T>)(resultSet.Select(x => BindingProperties(new T(), x)).ToList());
        return customResult;
    }
有人能帮我解决这个问题吗?

无法强制转换System. collections . generic . list类型的对象.到System.Coll

选择表达式中的dynamic类型导致整个表达式被视为动态表达式,返回一个IEnumerable<dynamic>

如果您明确地告诉c#使用.Select<dynamic,T>,您可以强制返回类型为T,并且您的代码将按预期工作。

    private IList<T> GetResultSetConvertedToList<T>(IList<T> dataSet, IEnumerable<dynamic> resultSet)
        where T : class, new()
    {
        IList<T> customResult = (IList<T>)(resultSet.Select<dynamic, T>(x => BindingProperties(new T(), x)).ToList());
        return customResult;
    }
相关文章: