5

だから私はNVLの束が必要なクエリを実行する必要がありますが、linqでこれらを実行する必要があります(dbバックエンドがBD2であり、サブソニックを使用している場合)Webで「NVL linq」を検索しましたが、しませんでした本当に役立つものを見つけたので、ここで質問しています。

ご協力いただきありがとうございます...

4

2 に答える 2

9

null合体演算子を使用できます??

var abs = from row in table
          select new {a = row.a ?? "default", b = row.b};

演算子は左側の値を確認し、nullの場合は、右側の値を使用します。したがって、この例では、row.aがnullの場合、はにaなり"default"ます。

これは、が文字列であることを前提としてrow.aいます。

于 2011-04-06T14:40:19.917 に答える
0

どうやってこれをやったのか知りたい人がいれば、私はnull合体演算子を使用しませんでした...それよりもさらに簡単でした。たぶん私は自分自身を明確に説明していませんでしたが、値がnullの場合はその結果を含めたいということを言う必要がありました。見てみな。

 possibleVendors = (from vndMapping in db.COMPANIES_VND_MAPPINGS
                     join v in db.COMPANIES_CMP_COMPANIES on vndMapping.VENDOR_ID equals v.COMPANY_ID
                     where
                     !(from ex in db.COMPANIES_VND_MAPPINGS
                        where (ex.OEM_ID == oemId || ex.OEM_ID == null)
                        && (ex.MODEL_ID == modelId || ex.MODEL_ID == null)
                        && (ex.MODALITY_ID == modalityId || ex.MODALITY_ID == null)
                        && (ex.CLASS_ID == productTypeId || ex.CLASS_ID == null)
                        && ex.EXCLUDE.ToUpper().Equals("Y")
                        select ex.VENDOR_ID).Contains(vndMapping.VENDOR_ID)
                     && (vndMapping.OEM_ID == oemId || vndMapping.OEM_ID == null)
                     && (vndMapping.MODEL_ID == modelId || vndMapping.MODEL_ID == null)
                     && (vndMapping.MODALITY_ID == modalityId || vndMapping.MODALITY_ID == null)
                     && (vndMapping.CLASS_ID == productTypeId || vndMapping.CLASS_ID == null)
                     select new
                     {
                       vndMapping.VENDOR_ID,
                       v.COMPANY_NAME
                     }).Distinct().OrderBy(x => x.VENDOR_ID).ToDictionary(x => x.VENDOR_ID, x => x.COMPANY_NAME);

ここで覚えておいてください - ビジネスロジック (明らかに) またはデータベースを設計しなかったという点で、いくつかの制限がありました - あなたがすべてを完全に制御できる場合、他の誰かがこれを行うためのより良い方法を持っているかもしれませんが、これはうまくいくようです.

于 2011-04-08T12:58:40.753 に答える