2012-02-19 66 views
1

我寫了一個LINQ查詢或條件,但它不工作,它似乎我做錯了什麼。LINQ OR運算符沒有給出結果

我傳遞一個字符串值和它,我想得到我的結果。

var userDetails = context.tbl_members.Where 
       (
        d => d.Mobile == value 
        || 
        d.MemberId == Int32.Parse(value) 
       ).SingleOrDefault(); 

它不是,如果有人把與MEMBERID

移動沒有,但如果工作,如果我將查詢工作只保留手機號碼及其運行良好。

var userDetails = context.tbl_members.Where(d => d.Mobile == value).SingleOrDefault(); 

請查看我做錯了什麼用或條件

問候 解脫

+4

定義「不工作」 - 它拋出異常嗎?不要返回你想要的結果?什麼?另外:這裏涉及的**精確**數據庫數據類型是什麼? 「char(20)」的行爲與「nvarchar(20)」的行爲非常不同,例如 – 2012-02-19 18:30:36

回答

5
var userDetails = context.tbl_members 
         .Where(d => d.Mobile == value || 
            d.MemberId == Int32.Parse(value)) 
         .SingleOrDefault(); 

看起來你正在使用LINQ到實體或LINQ到SQL。 Int32.Parse()不支持在這種情況下 - 只是做數轉換您的查詢之前:

int numValue = Int32.Parse(value); 
var userDetails = context.tbl_members 
         .Where(d => d.Mobile == value || d.MemberId == numValue) 
         .SingleOrDefault(); 
+0

感謝您的幫助,但仍然無效。 – Moksha 2012-02-19 19:31:48

0

感謝您的幫助brokenGlass,

錯誤是從字符串轉換爲INT,當我經過串10個數字,它沒有被轉換成int

Int32的值對於太大或太小。

謝謝