c# - LINQ OR 运算符不给出结果

标签 c# linq

我已经编写了一个带有 or 条件的 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();

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

问候 解脱

最佳答案

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

关于c# - LINQ OR 运算符不给出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351894/

相关文章:

c# - C# 中的工厂、构造函数和泛型

linq列表字符串像

c# - 表达式树 : Binary operator not defined for types

c# - DocumentDB LinQ 请求率大

linq - 如何在 OS X 上的 MonoDevelop 2.0 中使用 Linq?

c# - 用于进度条的 ASP.NET Web 控件

c# - 来自其他类的线程方法?

c# - 只能存储 MySqlParameter 对象 (C#)

linq 样式,链接 where 子句与和运算符

c# - 在 WCF 服务上运行 svcutil.exe 时,OperationBehaviorAttribute 错误