【问题标题】:Unable to cast object of type 'System.Collections.Generic.List无法转换类型为“System.Collections.Generic.List”的对象
【发布时间】:2013-05-14 21:37:59
【问题描述】:

我收到这个错误

无法转换类型的对象 'System.Collections.Generic.List`1[TransTripLeg]' 键入“System.Data.DataTable”。

我似乎无法弄清楚如何解决它。错误发生在下面代码中的DataTable dtTable =

if (!string.IsNullOrEmpty(Request.QueryString["EditMode"]))
{
    DataTable dtUpdate = (DataTable)Session["TripRecords"];
    DataRow[] customerRow = dtUpdate.Select("LegID = '" + sLegID.ToString() + "'");

我想我将它转换为类型 DataTable,但我仍然收到错误。

【问题讨论】:

  • 正如错误明确所述,它不是 DataTable。
  • Session["TripRecords"] 是 List 类型。我猜是“(DataTable)Session["TripRecords"];"将其转换为类型 DataTable。
  • 你不能简单地将所有东西都转换成所有东西——类型必须有共同点。
  • @Csharp:强制转换无法将对象转换为不相关的类型。阅读blogs.msdn.com/b/ericlippert/archive/2009/03/19/…
  • 感谢@SLaks 的链接。

标签: asp.net casting datatable


【解决方案1】:

您需要将Session["TripRecords"] 转换为List<TransTripLeg> 而不是DataTable

var collection = (List<TransTripLeg>)Session["TripRecords"];
var legs = collection.Where(c => c.LegID == sLegID);

【讨论】:

    【解决方案2】:

    删除这个符号只对我有用(') 这对我来说很好用

    DataRow[] dr = allleaveDt.Select("EmployeeId=" + empId);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 2016-02-10
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      相关资源
      最近更新 更多