0

私はDocumentテーブルとテーブルを持っていVersionます。どちらも同じ情報を持っています。ドキュメントが作成されるたびに、ドキュメント テーブルに挿入されます。そのドキュメントが編集されるたびに、Versions テーブルに行が追加されます。

null承認されるまでのフィールド dateApproved があります。私は現在 MVC 4 承認ページに取り組んでおり、これまで linq に触れたことがなく、linq で行う必要があります。

これらの 2 つのテーブル Document/Version を結合して、dateApproved のアイテムのみを表示するにはどうすればよいですnullか?

from v in Versions
select v

from v in Document
select v

編集#1

ユーザーが新しいドキュメントを追加すると、このドキュメントがドキュメント テーブルに追加されます。この時点で、ドキュメントには承認が必要です。Documents テーブルの dateApproved フィールドが null です。このドキュメントが承認され、ユーザーが変更を加えると、このドキュメントは既に存在するため、Versions テーブルに行が追加されたとします。これで、このドキュメントは両方のテーブルに存在し、元の​​ドキュメントには dateApproved を持つリビジョン 0 があり、Versions テーブルには dateApproved が null のリビジョン 1 があります。

私が必要としているのは、dateApproved が null の場合、この null が Documents テーブルまたは Versions テーブルにあるドキュメントです。承認された後、Version テーブルの行をそのままにして、承認されたバージョンで Documents テーブルの行を更新します。

キーの主キーは DocumentID です。

編集#2

Peter Kiss のおかげで、承認が必要なすべてのファイルが表示されるようになりました。私が遭遇している問題がもう 1 つあります。正しい 3 つの結果を返しています。2 ファイルが新規で、1 ファイルが編集されています。

2 つの新しいファイルには、ドキュメント テーブルからの情報が正しく表示されます。編集されたファイルにはドキュメント テーブルからの情報が表示されていますが、リビジョン テーブルからの情報が必要です。アイテムがバージョン テーブルに存在する場合はバージョン テーブル情報を返し、バージョン テーブルに存在しない場合 (つまり、新品) はドキュメント テーブル情報を返すようにすることは可能ですか。

私がそれを適切に説明したことを願っています。

4

2 に答える 2

1

dateApprovednullを持つレコードのみを選択します。ある種のリストに集めますlistofVersions

var listofVersions=(from v in Versions 
         where v.dateApproved==null
         select v).ToList();

についても同じことができますDocumentVersionに置き換えるだけDocumentです。注:var簡単にするために で収集します。必要に応じてリストを作成できますVersions/Document

于 2013-04-10T17:00:04.993 に答える