2015-11-07 59 views
0

我收到以下错误错误转换数据表到了IEnumerable

错误: - 无法式 “System.Data.EnumerableRowCollection”隐式转换为 “System.Collections.Generic.IEnumerable”。 的显式转换存在(是否缺少 投?)C:\用户\ e19206 \文档\ Visual Studio的 2010 \项目\ TerroristMVC \ TerroristBAL \型号\ Landingbal.cs 51 20 TerroristBAL

这里是我的代码

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(); 
} 

这里是我的目标Model类

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 
} 

回答

1

你得到的是错误的,因为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 
             }; 
+0

注意这也需要System.Data.DataSetExtensions.dll组件被引用到能够使用AsEnumerable和Field(它们是DataTableExtensions类的一部分) –

+0

@SimonMourier - 是的,OP已经在使用那个cz,他现在正在返回'dtRepSummary.AsEnumerable()'。 –

+1

我想是这样,但不清楚阅读的问题,它的标签或答案 –