我想使用 lambda 表达式来搜索状态等于 1 或 2。我的代码如下:
return database.Find<Patient>(p=>(p.Id==Id && p.status ==1)||(p.Id==Id && p.status==2));
我知道这是不对的,但是您可以从上面的代码中了解我想要做什么。
我用c#
更新:对不起,我只是意识到这不是语法的原因,而是我用来从数据库获取数据的第三方 api 的原因。请关闭这个问题。
我想使用 lambda 表达式来搜索状态等于 1 或 2。我的代码如下:
return database.Find<Patient>(p=>(p.Id==Id && p.status ==1)||(p.Id==Id && p.status==2));
我知道这是不对的,但是您可以从上面的代码中了解我想要做什么。
我用c#
更新:对不起,我只是意识到这不是语法的原因,而是我用来从数据库获取数据的第三方 api 的原因。请关闭这个问题。
return database.Find<Patient>(p=>p.Id==Id &&
(p.status ==1 || p.status==2));
好吧,它可以简化一点,但它应该像你所拥有的那样在语义上等同于下面的简化版本。
return database.Find(p => p.Id == Id && (p.Status == 1 || p.Status == 2));
需要注意的一件事;您说您需要找到状态为 1 或 2 的患者,但您的代码显示为 1 或 20。您是否直接复制了该代码段(即,这是一个简单的拼写错误问题吗?)
我可能会减少一点,但我认为你现在所拥有的应该可以工作。
return database.Find<Patient>(p => p.Id==Id && (p.status == 1 || p.status == 2);
也许你写的是“20”而不是“2”?
我假设database
在这个代码片段中是指一个有效的 DataContext。我会使用Where
而不是Find
:
return database.Where(p=>(p.Id == Id && (p.status == 1 || p.status == 20));