C# lambda表达式如何表达?

C# lambda表达式如何表达?,c#,C#,我想使用lambda表达式来搜索等于1或2的状态。 我的代码如下所示: return database.Find<Patient>(p=>(p.Id==Id && p.status ==1)||(p.Id==Id && p.status==2)); return database.Find(p=>(p.Id==Id&&p.status==1)| |(p.Id==Id&&p.status==2)); 我知道这是不对的,但是你知道我想从上面的代码

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

return database.Find<Patient>(p=>(p.Id==Id && p.status ==1)||(p.Id==Id && p.status==2));
return database.Find(p=>(p.Id==Id&&p.status==1)| |(p.Id==Id&&p.status==2));
我知道这是不对的,但是你知道我想从上面的代码中做什么

我用c#


更新:抱歉,伙计们,我只是意识到这不是语法的原因,而是我用来从db获取数据的第三方api的原因。请关闭此问题。

返回数据库。查找(p=>p.Id==Id&&
return database.Find<Patient>(p=>p.Id==Id && 
        (p.status ==1 || p.status==2));
(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);
return database.Find(p=>p.Id==Id&&(p.status==1 | | p.status==2);

我假设此代码段中的
数据库
引用了有效的数据上下文。我将使用
Where
而不是
Find

return database.Where(p=>(p.Id == Id && (p.status == 1 || p.status == 20));

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

这应该是有效的…什么不起作用?代码中有20,规范中有2…?!如果不是
列表,就没有方法了。尽管你可能是对的,OP只是用了一个糟糕的例子让我们更加困惑。