0

我想使用 lambda 表达式来搜索状态等于 1 或 2。我的代码如下:

return database.Find<Patient>(p=>(p.Id==Id && p.status ==1)||(p.Id==Id && p.status==2));

我知道这是不对的,但是您可以从上面的代码中了解我想要做什么。

我用c#


更新:对不起,我只是意识到这不是语法的原因,而是我用来从数据库获取数据的第三方 api 的原因。请关闭这个问题。

4

5 回答 5

6
return database.Find<Patient>(p=>p.Id==Id && 
        (p.status ==1 || p.status==2));
于 2012-06-04T20:27:06.903 回答
5

好吧,它可以简化一点,但它应该像你所拥有的那样在语义上等同于下面的简化版本。

return database.Find(p => p.Id == Id && (p.Status == 1 || p.Status == 2));

需要注意的一件事;您说您需要找到状态为 1 或 2 的患者,但您的代码显示为 1 或 20。您是否直接复制了该代码段(即,这是一个简单的拼写错误问题吗?)

于 2012-06-04T20:27:39.417 回答
2

我可能会减少一点,但我认为你现在所拥有的应该可以工作。

return database.Find<Patient>(p => p.Id==Id && (p.status == 1 || p.status == 2);
于 2012-06-04T20:27:58.523 回答
1

也许你写的是“20”而不是“2”?

于 2012-06-04T20:29:01.983 回答
0

我假设database在这个代码片段中是指一个有效的 DataContext。我会使用Where而不是Find

return database.Where(p=>(p.Id == Id && (p.status == 1 || p.status == 20));
于 2012-06-04T20:28:50.877 回答