2017-04-04 15 views
0

私は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、通知コレクションにあった場合)
+0

あなたはいくつかと、エンティティの構造を表示することができますサンプルデータと必要なアウトプット – jitender

+0

質問が更新されました。 – Robin

答えて

1
   var notifications = from n in repository.Get<Domain.Notification>() 
          where n.UserId == userID 
          select n.DocTypeId; 

      var docTypes = repository.Get<Domain.DocumentType>().Where(d =>d.SupplierID == SuppId).Select(d =>new { 
      d.Id, 
      d.Name, 
      hasEntryInNotifications=notifications.Any(n => n ==d.Id) 
      }) 
+0

ありがとう、私はこれがトリックをすると思います。私は今それをテストするつもりなら、私は戻ってきて答えをチェックします:) – Robin

+0

@Robin Ok何か問題があれば元に戻してください。 – jitender

関連する問題