C# 非常简单的LINQ查询,将文本框值传递给where子句

C# 非常简单的LINQ查询,将文本框值传递给where子句,c#,linq,linq-to-sql,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.M

我希望我的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


有人能指出我哪里出错了吗?

我想
MemberId
属性是一个整数。因此不能将其与字符串值进行比较
Text.ToString()
无论如何都是多余的,因为
Text
已经是一个字符串

where r.MemberId.ToString() == tbxMember.Text
应该有用

一个更简洁的解决方案是将
Text
属性解析为
int
值(以及一些有效性检查),并使用
int
s进行比较,如

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
是一个整数。但在这种情况下,您的代码甚至不应该编译。我只是想知道upvots:-)…

您是否确定text属性实际具有预期值?(正确的大小写,没有前导/尾随的whitspace等)?您好,Rune,是的,我输入的值测试这正是DataTable中的值。后者应该更有效。这已经起到了作用-MemberID可能也是字符串,但是。。。(大量的赞成票等待争夺:D)例如,成员ID=MM12345或只是123i.e。类型是nvarchar PS:我真的很感谢你的帮助,我现在感觉很紧张。我知道我想做什么,只是不知道如何去做。我会做以下几件事:
lg.tblOnlineReportingLogings.Count()
,你能从lg.tblOnlineReportingLogins select(r=>MessageBox.ShowMessage(““+r.MemberId+”=““”+tbxMember.Text))中的r中看到什么(假设您有一个winforms应用程序。如果没有,请验证您的应用程序在某些ASP.NET输出或某些日志文件中看到的表的内容)好的,很酷-是的,我会一步一步来做。谢谢您的建议。