2010-01-21 51 views
1

我希望我的LINQ查詢根據用戶輸入到文本框中的數量來計算成員在表中存在的實例的數量。非常簡單的LINQ查詢,將文本框的值傳遞到where子句

其結果是,我有以下

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。

有人可以指出我要去哪裏嗎?

+0

你確定文本屬性實際上具有預期值嗎? (正確的情況下,沒有領先/尾隨whitspace等)? – 2010-01-21 18:57:44

+0

你好符文,是我輸入的值測試這正是數據表中的值 – 2010-01-21 19:01:09

+0

什麼類型是MemberID?詮釋? – Jagd 2010-01-21 19:03:38

回答

3

我想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"); 
} 

EDIT:對不起,也許我太快了,我假設MemberId是一個整數。但在這種情況下,你的代碼甚至不應該編譯。我只是想知道upvotes :-) ...

+0

後者應該更有效率。 – Jagd 2010-01-21 19:02:51

+0

這已經工作了 - 可能會員ID也可能是一個字符串,但是...(很多贊成投票:D)例如。會員ID = MM12345或只是123 – 2010-01-21 19:10:50

+0

,即類型是nvarchar PS:我真的很感謝幫助,我現在感覺如此密集。我知道我想做什麼,我只是不知道如何去做。 – 2010-01-21 19:13:25