0

ラムダ式を使用して、1 または 2 に等しいステータスを検索したいと考えています。私のコードは次のようになります。

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

正しくないことはわかっていますが、上記のコードから何をしたいのか理解できます。

私はc#を使用します


更新:申し訳ありませんが、それは構文の理由ではなく、dbからデータを取得するために使用するサードパーティの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 つあります。あなたはステータスが 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

「2」ではなく「20」と書いてしまったのではないでしょうか?

于 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 に答える