【问题标题】:Conversion from string "x" to type 'Integer' is not valid从字符串“x”到类型“Integer”的转换无效
【发布时间】:2015-05-13 19:23:38
【问题描述】:

尝试在 asp.net 下拉列表中创建默认行时出现以下错误:从字符串“x”到类型“整数”的转换无效。

  • CmbSalesAgents 是下拉控件。
  • DefaultSalesAgent 是实体对象(有值)
  • x 是一个数值和一个字符串的串联

**

Dim DefaultSalesAgent = (From o In db.PayoutRegisters
                         Join s In db.SalesAgents On s.SalesAgentId Equals o.SalesAgentID
                         Where o.PayoutRegisterID = PayoutRegisterID
                         Select o.PayoutRegisterID, x = s.CSRName + " (" + o.PaidThruDate.ToString + ")").ToList




    If DefaultSalesAgent.Count > 0 Then
        CmbSalesAgents.Items.Insert(0, New ListItem(DefaultSalesAgent.Item("x").ToString, PayoutRegisterID))
    Else
        CmbSalesAgents.Items.Insert(0, New ListItem("Select Sales Agent Payout Register", 0))
    End If

【问题讨论】:

  • List(of T).Item 没有参数字符串的重载。你应该通过 Integer 代替。使用DefaultSalesAgent.Item(0) 或仅使用DefaultSalesAgent(0)

标签: asp.net vb.net linq entity-framework


【解决方案1】:

由于 DefaultSalesAgent 是一个列表对象,那么您应该通过整数索引而不是字符串来访问它的项目:

DefaultSalesAgent.Item(integer_index)

【讨论】:

    【解决方案2】:

    如果您特别需要根据字符串值插入行,可以替换

    DefaultSalesAgent.Item("x")
    

    DefaultSalesAgent.Item(DefaultSalesAgent.FindIndex(x => x.StartsWith("x")));
    

    您还可以根据需要使用 contains 而不是 startswith。请注意,这仅适用于您特别需要查找字符串的情况,因为它比访问列表中的索引要昂贵得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多