非常简单的LINQ查询,将textbox值传递给where子句

时间:2010-01-21 18:48:49

标签: c# linq linq-to-sql

我希望我的LINQ查询根据用户输入文本框的内容来计算成员在表中的实例数。

结果,我有以下

protected void btnSubmit_Click(object sender, EventArgs e)
{
    LoginDataContext lg = new LoginDataContext();

    int logincheck = (from r in lg.tblOnlineReportingLogins
                      where r.MemberID == tbxMember.Text.ToString()
                      select r).Count();

当我调试它时,当我知道不是这种情况时,该值显示为0.

有人可以指出我哪里出错吗?

1 个答案:

答案 0 :(得分:3)

我认为MemberId属性是一个整数。所以你无法将它与字符串值进行比较。无论如何Text.ToString()是多余的,因为Text已经是一个字符串。

where r.MemberId.ToString() == tbxMember.Text

应该有用。

更干净的解决方案是将Text属性解析为int值(连同一些有效性检查)并使用int进行比较,例如

int targetId;
if (Int32.TryParse(tbxMember.Text, out targetId)) {
    int logincheck = (from r in lg.tblOnlineReportingLogins
                  where r.MemberID == tbxMember.Text.ToString()
                  select r).Count();
    // ...
} else {
    MessageBox.ShowMessage("Invalid Id");
}

编辑:抱歉,也许我太快了,我认为MemberId是一个整数。但在这种情况下,您的代码甚至不应该编译。我只是想知道赞成票:-) ......