パラメータがnullかどうかわからないので、次のように使用します: Param!= nullならばParam == nullの場合はそのIDと を比較し、nullと比較してください。Linq:存在しない値と比較しても例外は発生しませんが、それはありません
そのような何か:
var c = from cat in context.Categories
where ParamCat != null && cat.ParentId == ParamCat.Id
||
ParamCat == null && cat.ParentId == null
select c;
をParamCatはすぐに私は(c.Count()例)Cから何かを取得しようとしてとしてnullの場合は、例外がスローされます。
通常、何らかの条件を使用すると、特にANDを使用すると条件が失敗するとすぐに比較が中止されます。たとえば、このコードは例外を発生させません:
if (ParamCat != null && cat.ParentId == RaramCat.Id)
{
}
もしそうなら、上記のlinqコードで例外が発生するのはなぜですか? (ヌル参照)
ありがとうございますが、その順序でそれらを評価するために、コンパイラを取得するために、グループに括弧を使用して&&
表現を必要とする
編集権限はありませんが、「select c」ではなく「select cat」である必要があります。 – lukiffer
@lukiffer:確かに、それはすべきです。これはOPの式をコピーして貼り付けて有効性をチェックせずに取得したものです。 –
ここに私の作業コードです:var cc = from c from context.Categories orderby c.CategoryName ここで(ParentCategory!= null && c.CategoryParentId == 55)|| (ParentCategory!= null && c.CategoryParentId == ParentCategory.CategoryId)// ParentCategory.CategoryId select c;結果は同じです、私は理由を理解できませんか? – mimic