【问题标题】:Linq error "Input string was not in a correct format."Linq 错误“输入字符串的格式不正确。”
【发布时间】:2014-05-06 23:53:45
【问题描述】:

我的查询如下所示:

var rport = from exc in db.Exception_Datas
            join emp in db.Emp_infos on exc.Emp_id equals emp.ID
            where (exc.Action_date >= frm && exc.Action_date <= to) && 
                   emp.Branch == cmbBranch.SelectedValue && 
                   emp.Dept == cmbDept.SelectedValue && 
                   emp.ID == Convert.ToInt32(cmbEmp.SelectedValue)
            select new
            {
                emp.Emp_name,
                emp.ID,
                emp.Designation,
                emp.Dept,
                emp.Branch,
                exc.Action_date
            };

我正在与这样的 cmbEmp.Items 签约:

var allEmp = from emp in db.Emp_infos select emp;
myItem.Text = "--Select--";
myItem.Value = "0";
cmbEmp.Items.Add(myItem);
foreach (var semp in allEmp)
{
    myItem = new RadComboBoxItem();
    myItem.Text = semp.Emp_name.ToString();
    myItem.Value = semp.ID.ToString();
    cmbEmp.Items.Add(myItem);
} 

我已经关注了一些其他问题,并在 SO 和 SO 之外发布。但是他们中的任何一个都没有帮助我解决问题。我收到此错误:

{“输入字符串的格式不正确。”} System.SystemException {System.FormatException}

【问题讨论】:

  • 问题似乎与Convert.ToInt32(cmbEmp.SelectedValue) 有关,请确保您的SelectedValue 具有int 可解析值。也不要在 LINQ 查询中这样做,在查询之前对其进行解析,然后在查询中使用该值。
  • 只是为了详细说明@Habib 提到的内容,您不想将转换作为 LINQ 查询的一部分,因为它将为 每个 记录执行转换。
  • @habib > 我按照 Muhammad Umars 的回答做了。但为此我没有得到任何价值。你能猜到为什么吗?
  • @Rashad,您没有得到正确的选择值。放置一个调试器点,看看你在cmbEmp.SelectedValue 中得到了什么。该问题与您的 LINQ 查询无关。

标签: c# linq sql-server-2008


【解决方案1】:

问题似乎在这条线上。 Convert.ToInt32(cmbEmp.SelectedValue)。在使用 linq 查询之前,请确保它正确解析并解析它。像这样试试

int empId;

if (Int32.TryParse(cmbEmp.SelectedValue, out empId))
{
    var rport = from exc in db.Exception_Datas
        join emp in db.Emp_infos on exc.Emp_id equals emp.ID
        where (exc.Action_date >= frm && exc.Action_date <= to) && 
               emp.Branch == cmbBranch.SelectedValue && 
               emp.Dept == cmbDept.SelectedValue && 
               emp.ID == empId
        select new
        {
            emp.Emp_name,
            emp.ID,
            emp.Designation,
            emp.Dept,
            emp.Branch,
            exc.Action_date
        };
}

【讨论】:

  • 虽然您的回答解决了崩溃问题,但还是有问题。我没有得到任何数据。你能猜到为什么吗?
  • 为什么不告诉我们 cmbEmp.SelectedValue 的值是什么?
  • @Rashad:你需要找出cmbEmp.SelectedValue是什么异常发生时
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多