1

これは単純なはずですが、何らかの理由で私にはエラーがあります。

データベースには、文字列SubjectId、bool QReport、int Q、int FY、List ANotes、intIdが含まれています。Idはキー列であるため、取得されません。

次のようなデータベーステーブルからデータを取得します

var unotesxx = db.UNotesDB.First(X => x.SubjectId == model.SubjectId);

これによりデータが取得されます。次に、それをオブジェクトリストに入れます。

List<UNotesDB> UNotes = new List<UNotes>();
Unotes.Add(unotesxx);

これはうまくいきます。同じコンテンツを使用する2つのオブジェクトとリストがあります。違いは、含まれているデータです。次に、2つを1つのリストにまとめたいと思います。

List<TNotesDB> TNotes = new List<TNotes>();

これは他の2つとまったく同じように設定されています。それから私は試しました

List<UNotesDB> UNotes = new List<UNotes>();
List<CNotesDB> CNotes = new List<CNotes>();
List<TNotesDB> TNotes = new List<TNotes>();
var unotesxx = db.UNotesDB.First(X => x.SubjectId == model.SubjectId);
var cnotesxx = db.UNotesDB.First(X => x.SubjectId == model.SubjectId);
UNotes.Add(unotesxx);
CNotes.Add(cnotesxx);

これはすべて機能し、準拠しており、デバッグを実行すると、すべてが見栄えがします。

今、私は最初の2つを3番目のものに結合したいと思います。そこで、次の2人の政治家を追加しました。

TNotes.Add(unotesxx);
TNotes.Add(cnotesxx);

これらは赤で下線が引かれます。

だから私は試しました

for ( int i = 0; i < UNotes.Count; i++)
{
    TNotes.Add(UNotes[i]);
}

ここでも、ADD部分に赤で下線が引かれています。これがうまくいかないという単純な理由があることは知っていますが、どういうわけか、私は木々のために森を見ることができません。笑

4

1 に答える 1

0

一般的なリストは強く型付けされています。UNotesDBをに追加することはできませんList<TNotesDB>

オプション:

  1. 3つすべてに共通の「コンテナ」クラスを作成し、さまざまなタイプをそのコンテナオブジェクトにロードしてから、リストにロードします。

    public class Note {
       public int SubjectID {get;set;}
       public string Name {get;set;}
    }
    
    //get UNOTE logic here...
    // then add unote to List. Repeat for other types.
    
    var note = new Note() {
       SubjectID = unote.SubjectID,
       Name = unote.Name,
    };
    
    noteList.Add(note);
    
  2. すべてのタイプのインターフェースを作成してから、そのインターフェースのリストを作成します

  3. すべてのタイプの基本タイプを作成してから、その基本タイプのリストを作成します。

データベースタイプがLINQToSQLまたはEntityFrameworkによって生成されていると仮定すると、最初のオプションが最も単純なアプローチである可能性があります。

于 2012-10-08T14:37:59.987 に答える