【问题标题】:Linq query in not returning value when taking input from TextBox从 TextBox 获取输入时,Linq 查询未返回值
【发布时间】:2012-09-30 11:13:40
【问题描述】:

这是模型的图像。您可以看到我正在搜索的列是类型字符串。

现在我只想从文本框中获取输入并将其与所需的列匹配。

protected void Button1_Click(object sender, EventArgs e)
{
    String val = Convert.ToString(TextBox1.Text.Trim());
    Entities query = new Entities();

    var txn = (from p in query.MAINs
               where p.PAN.Equals(val, StringComparison.OrdinalIgnoreCase)
              select p).ToList();
    GridView1.DataSource = txn.ToList();
    GridView1.DataBind();
}

但查询返回 null(rowcount=0)。我检查了 val 变量。它发送确切的参数。当我直接给出值时,它会返回结果。

protected void Button1_Click(object sender, EventArgs e)
{
    String val = Convert.ToString(TextBox1.Text.Trim());
    Entities query = new Entities();

    var txn = (from p in query.MAINs
               where p.PAN.Equals("1010170000000030", StringComparison.OrdinalIgnoreCase)
              select p).ToList();
    GridView1.DataSource = txn.ToList();
    GridView1.DataBind();
}

我是 Linq 和实体框架的新手。这件事让我抓狂。不知道为什么从文本框中获取输入不起作用。任何形式的帮助都将不胜感激,因为我被困在这 3 天。请帮帮我。

【问题讨论】:

  • 你为什么要修剪 textbox1.Text ?另外,您的 where 语句中真的需要 StringComparison.OrdinalIgnoreCase 吗?
  • 是的,我修剪 textbox1.text。不,我在 where 子句中不需要 StringComparison.OrdinalIgnoreCase。
  • 能不能把ordinalIgnorecase删掉看看能不能用?
  • 这可能是页面编码的问题吗?
  • 你能在查询执行时对数据库本身进行某种跟踪吗?这将向您展示正在生成的 SQL,并可能揭示为什么一个版本有效而​​另一个版本无效。

标签: c# asp.net linq oracle10g entity-framework-4.1


【解决方案1】:

试试

var txn = (from p in query.MAINs
           where p.PAN.Trim().Equals("1010170000000030", 
               StringComparison.OrdinalIgnoreCase)
          select p).ToList();

我感觉 Oracle 表中的字段 PAN 是 char/nchar 而不是 varchar

【讨论】:

    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多