这应该很简单,但由于某种未知的原因,这对我来说是错误的。
数据库包含字符串SubjectId,bool QReport,int Q,int FY,List ANotes,int Id。 Id是关键列,因此无法检索。
我从数据库表中获取数据,如
var unotesxx = db.UNotesDB.First(X => x.SubjectId == model.SubjectId);
这可以获取数据。然后我将它放入一个对象列表中。
List<UNotesDB> UNotes = new List<UNotes>();
Unotes.Add(unotesxx);
这很有效。我有两个使用相同内容的对象和列表。区别在于所包含的数据。现在我想将两者合并为一个List。
List<TNotesDB> TNotes = new List<TNotes>();
这个设置与其他两个完全一样。然后我尝试了
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);
这一切都有效,遵守,当我运行Debug时,一切看起来都很棒。
现在我想将前两个结合到第三个中。所以我添加了下两个状态。
TNotes.Add(unotesxx);
TNotes.Add(cnotesxx);
最终在RED中强调了这一点。
所以我试过
for ( int i = 0; i < UNotes.Count; i++)
{
TNotes.Add(UNotes[i]);
}
再次,ADD部分用红色加下划线。 我知道有一个简单的原因,这不起作用,但由于某种原因,我看不到 森林里的树木。 LOL
答案 0 :(得分:0)
通用列表是强类型的。您无法将UNotesDB添加到List<TNotesDB>
。
选项:
为所有三个创建一个通用的“容器”类,并将各种类型加载到该容器对象中,然后加载到列表中
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);
为所有类型创建一个界面,然后创建该界面的列表
假设您的数据库类型是由LINQ To SQL或实体框架生成的,第一个选项可能是您最简单的方法。