Очень простой запрос LINQ, передающий значение текстового поля предложению where - PullRequest
1 голос
/ 21 января 2010

Я хочу, чтобы мой запрос 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 Ответ

3 голосов
/ 21 января 2010

Полагаю, свойство 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 было целым числом. Но в этом случае ваш код даже не должен был компилироваться. Я просто интересуюсь голосами против :-) ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...