2017-06-28 12 views
0

以下のクエリは期待どおり機能していますが、1つの機能が欠落しています。 DepartmentIdのフィールドがNULL可能で、ユーザーを反復するとき、私は私がグループに参加するべきである知っているように私はちょうど限りDepartmentIdのLinqからSQLへの追加参加が必要nullチェックが必要

from document in _documentRepository.GetAll() 
from documentShare in document.DocumentShares where documentShare.UserId == input.SharedUserId 

join sU in _userRepository.GetAll() 
on documentShare.UserId /* Additional null check should be here 
like documentShare.DepartmentId == null */ equals sU.Id into sharedUsersInfo 

を持っていないユーザーを取得したいが、でも、私は私が望んでいた結果を得ることができませんでした試みました。助けてくれてありがとう。

+0

私は混乱しています。 'DepartmentId'は' User'や 'DocumentShare'のプロパティですか? –

+0

@IvanStoev DepartmentIdはDocumentShareのプロパティです。このクエリで後で参加する部門もあり、DocumentShareテーブルのuserIdもnullになる必要があります。私はdepartmentIdの世話をすることができると思った。それから私もuserIdのために同じことをすることができた。 – user3055125

答えて

0

このコードを使用してヌル値でないことを確認します。 希望このことができます:) をdocumentShare.DepartmentId.HasValue & & documentShare.DepartmentId.Value

+0

あなたの答えは私の突き刺しには合いません。どこで私はこれを伝えるのですか?documentShare.UserId/*追加のヌルチェックはこちらにしてください documentShare.DepartmentId == null * /と等しいです.Su.Id into sharedUsersInfo "ここにちょうどいいですか? – user3055125

+0

こんにちは、 "documentShare.UserId.HasValue && documentShare.UserId.Value(userIdがnull値を取ることができる場合)&&!documentShare.DepartmentId.HasValue(null値をチェックする)の両方の条件を確認できます。"あなたは両方の条件をチェックしています。 –

+0

mate私はこの条件を結合線の中に指定することはできません。なぜなら、すぐに何も選択しないので、あなたの答えは私の場合とは何の関係もないからです。私のアプローチは間違っているかもしれませんが、私はそれを理解しようとしています。 – user3055125

0

あなたはそれを試みることができる場合だけで(すみません、まだコメントすることはできません)ここに推測:

... sharedUsersInfoに_userRepository.GetAll()documentShare.UserId上 に等しいsU.Id and documentShare.DepartmentId == null でSUに参加

+0

残念ながら指定した期間はありません。 – user3055125

0

あなたは、単にadditioを追加できませんでしたドキュメントの「where」節に制約がありますか?

... 
from documentShare in document.DocumentShares where documentShare.UserId == input.SharedUserId 
    && documentShare.DepartmentId == null 
... 
+0

この場合、ユーザーを呼び出すときにdepartmentIdをnullにする必要があり、部門を呼び出すときにuserIdをnullにする必要があるため、条件を厳密に指定することはできません。私のクエリはこのようになり、私のシナリオでは両方の値がnullになる可能性があります。 – user3055125

関連する問題