私は2つのコレクションを持っています。通知のコレクションとドキュメントタイプのコレクション。私は両者についての情報を収集し、何かに応じて余分なフィールドを追加する必要があります。しかし、私はこれを行う方法の手がかりを持っていません。linqクエリ構文にif-elseをブレンドする方法
ドキュメントタイプコレクションからドキュメントタイプIDと名前を取得します。また、NotificationsコレクションのドキュメントタイプIDだけを取得します。両方にIDがある場合は、単純に「購読済み」の文字列値である余分なフィールドが戻り値に追加されます。そうでない場合、文字列の値は "Unsubscribed"でなければなりません。私はもちろん、ブール値で作業することができます。
これは私が今までに得たものです。
コードの通知から、私は必要なものを得るために:
var notifications = from n in repository.Get<Domain.Notification>()
where n.UserId == userID
select n.DocTypeId;
コードをドキュメントタイプから、私は必要なものを得るために:
(注:私は右ここに参加を行うことができれば、私は考えそれを好む。)
var doctypes = from d in repository.Get<Domain.DocumentType>()
where d.SupplierID == SuppId
select new { d.Id, d.Name};
私はまだ参加していない。私は選択した新しいフィールドにどのようにフィールドを追加できるのか分かりません。そして、私はどのようにクエリ構文で一種のif-else文を実行できるのか分かりません。かつて私はTSQLでそれをしたことを知っています。だから私はlinqでも可能であることを期待していました。私が試みたが、私には間違った「感じて」いる
コード:
string temp = "unsubscribed";
bool temp2 = true;
var testing =
from d in repository.Get<Domain.DocumentType>()
where d.SupplierID == SuppId
select new { d.Id, d.Name, temp, temp2 = false };
は、だからここに私は3番目のフィールドを追加取得するいくつかのことを試してみました。私はそれをどうやってやったかというと、やや汚れているように感じますが、それがない場合はこれを使用します。私が今必要とするのは、if-else部分をどのように追加できるかです。私は選択肢を複数選択する方法を知っていますが、if-else部分を行う方法ではありません。
EDIT
2つのコレクション内でどのようなものです:
ドキュメントの種類:
- ID
- 名前
- SuppID
- 他の無関係なもの
通知:
- ID
- DocTypeID
- ユーザーID
- 他の無関係なもの
私は出力として希望何:3つの項目があり
リストつまり、オブジェクトごとに:
- Documentype ID
- のDocumentType名
- ブール値(真DOCTYPE IDがない場合はfalse、通知コレクションにあった場合)
あなたはいくつかと、エンティティの構造を表示することができますサンプルデータと必要なアウトプット – jitender
質問が更新されました。 – Robin