2012-02-19 42 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的值对于太大或太小。

谢谢