LINQ OR运算符没有给出结果

时间:2012-02-19 18:27:08

标签: c# linq

我已经写了一个带有或者条件的LINQ查询,但它没有用,看起来我做错了。

我传递一个字符串值并在其上,我想得到我的结果。

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();

请检查我做错了什么或条件

此致 解脱

2 个答案:

答案 0 :(得分:5)

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

看起来你正在使用Linq to Entities或Linq to Sql。在该上下文中不支持Int32.Parse() - 只需在查询之前进行数字转换:

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

答案 1 :(得分:0)

感谢您的帮助brokenGlass,

错误是从字符串转换为int,因为我传递了10位数的字符串,它没有被转换为int

对于Int32,值太大或太小。

感谢