从 TextBox 获取输入时,Linq 查询未返回值

Posted

技术标签:

【中文标题】从 TextBox 获取输入时,Linq 查询未返回值【英文标题】:Linq query in not returning value when taking input from TextBox 【发布时间】: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,并可能揭示为什么一个版本有效而​​另一个版本无效。 【参考方案1】:

试试

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

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

【讨论】:

以上是关于从 TextBox 获取输入时,Linq 查询未返回值的主要内容,如果未能解决你的问题,请参考以下文章

从LINQ到SQL获取SQL查询?

linq查询执行时返回对应的sql

MS Access中的VBA中不接受变量名称

LinQ的高级查询

从 LINQ 查询的一部分中获取值并将其添加到结果中

从 TextBox 获取 .Text 值