将数据表转换为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
}
由于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
};