1

一日の間、私は自分のリポジトリでこのnullの問題に悩まされています。ここにlinq to sql用に書かれた私のコードがあります...私は多くのオプションを試しましたが、これには助けがありません。

ここでの問題は、vidList が null 値を取得した場合、3 行目でスタックしてしまうことです。

vidList は問題ないが、fidListE が null になった場合でも、戻り値で null 例外が発生します。

カウントの使用、「??」の使用など、かなり多くのオプションを試しました ...しかし、まだ助けにはなりません。

    public List<ATTACHMENT> existedAttachment(IList<int> vidList, IList<int> fidList, IList<int> iidList)
    {
        IEnumerable<int> vidListE =  vidList.Distinct();
        IEnumerable<int> fidListE = (fidList != null) ? fidList.Distinct() : null;
        IEnumerable<int> iidListE = (iidList != null) ? iidList.Distinct() : null;
        return (from d in _db.ATTACHMENTs
                   .Where<ATTACHMENT>(d =>
                       ((vidListE != null) ? (vidListE.Contains<int>(d.VID_ID.Value)) : false) ||
                       ((fidListE != null) ? (fidListE.Contains<int>(d.FID.Value))    : false) ||
                       ((iidListE != null) ? (iidListE.Contains<int>(d.IMG_ID.Value)) : false)
                    )
                select d).ToList<ATTACHMENT>();
    }

少し手がかりを教えてください。どうもありがとうございました。私の脳は新年で立ち往生しました。:P

4

3 に答える 3

1

メソッドの冒頭でこのようなことを試しましたか。パラメータがnullの場合、これは空のリストに設定されます。

 IEnumerable<int> vidListE = (vidList != null) ? vidList.Distinct() : new List<int>();
 IEnumerable<int> fidListE = (fidList != null) ? fidList.Distinct() : new List<int>();
 IEnumerable<int> iidListE = (iidList != null) ? iidList.Distinct() : new List<int>();

return (from d in _db.ATTACHMENTs
                   .Where<ATTACHMENT>( d =>
                       vidListE.Contains<int>(d.VID_ID.Value) ||
                       fidListE.Contains<int>(d.FID.Value) ||
                       iidListE.Contains<int>(d.IMG_ID.Value) )
                    )
                select d).ToList<ATTACHMENT>();
于 2010-01-02T18:59:10.360 に答える
1

null を使用する代わりに、組み込みの Empty 列挙型を使用します。

IEnumerable<int> fidListE = (fidList != null) ? fidList.Distinct() : Enumerable.Empty<int>();

Contains() メソッドは常に false を返すようになり、クエリで null をチェックする必要がなくなりました。

于 2010-01-02T20:19:13.180 に答える
0

リストがnull可能なintで構成されていない必要があります。つまり

于 2010-01-02T18:54:54.033 に答える