将数据表转换为IEnumerable时出错

本文关键字:出错 IEnumerable 数据表 转换 | 更新日期: 2023-09-27 18:21:02

我得到以下错误

错误:-无法隐式转换类型"System.Data.EnumerableRowCollection"到"System.Collections.Generic.IEnumerable"。存在显式转换(是否缺少铸造?)C: ''Users''e19206''Documents''Visual Studio2010''Projects''TerroristMVC''TerroristBAL''Models''Landingbal.cs 51 20恐怖分子BAL

这是我的代码

public IEnumerable<Landing> getReportSummary()
{
    DataTable dtRepSummary = new DataTable();
    try
    {
        procname = "TDS_QUERY.GET_REP_SUMMARY";
        OracleParameter[] oraParam = new OracleParameter[1];
        oraParam[0] = new OracleParameter("TDS_RECORDSET", OracleDbType.RefCursor);
        oraParam[0].Direction = ParameterDirection.Output;
        connection = new OracleConnection(SqlHelper.GetConnection());
        DataSet ds = SqlHelper.ExecuteDataset(connection, CommandType.StoredProcedure, procname, oraParam);
        dtRepSummary = ds.Tables[0];
    }
    catch (Exception ex)
    {
        string errormessage = "Method name:- " + MethodBase.GetCurrentMethod().Name + " | Description: " + ex.Message + " " + ex.InnerException;
        log.Error(errormessage);
    }
    return dtRepSummary.AsEnumerable();
}

这是我降落的型号

public class Landing
{
    #region properties
    public string Reportid { get; set; }
    public string Reportdate { get; set; }
    public string Fromdate { get; set; }
    public string Todate { get; set; }
    public string Executed { get; set; }
    public string Userid { get; set; }
    public string Recadddate { get; set; }
    #endregion
} 

将数据表转换为IEnumerable时出错

由于dtRepSummary.AsEnumerable()返回IEnumerable<DataRow>,但返回类型为IEnumerable<Landing>,因此会出现此错误,您可以使用Select来投影您的类型,如下所示:-

return dtRepSummary.AsEnumerable().Select(x => new Landing
                                        {
                                           Reportid = x.Field<int>("Reportid"), 
                                           Reportdate = x.Field<string>("Reportdate"),
                                           ..and so on
                                        };