C# 无法从System.Collection.Generic.List转换<;Dal.Questio>;去达尔。奎斯蒂奥
我想将我的列表附加到另一个列表中,但当我这样做时,我得到了错误 怎么解决呢?C# 无法从System.Collection.Generic.List转换<;Dal.Questio>;去达尔。奎斯蒂奥,c#,linq,C#,Linq,我想将我的列表附加到另一个列表中,但当我这样做时,我得到了错误 怎么解决呢? public List<Questio> Get(int Id) { List<Questio> Quest; Quest = null; try { using (db = new Entities()) { var Qu = db.Que.Where(x => x.Lan == Id).Select
public List<Questio> Get(int Id)
{
List<Questio> Quest;
Quest = null;
try
{
using (db = new Entities())
{
var Qu = db.Que.Where(x => x.Lan == Id).Select(i => i.Id);
foreach (var a in Qu)
{
var ID = db.Quess.Where(x => x.QueId == a).Select(i => i.Qued);
foreach (var j in ID)
{
var vv = db.Questio.Where(m => m.QId == j).ToList();
Quest.Add(vv);
}
}
}
}
}
公共列表获取(int-Id)
{
列表任务;
Quest=null;
尝试
{
使用(db=new Entities())
{
var Qu=db.Que.Where(x=>x.Lan==Id);
foreach(在Qu中的变量a)
{
var ID=db.Quess.Where(x=>x.QueId==a)。选择(i=>i.Qued);
foreach(ID中的var j)
{
var vv=db.Questio.Where(m=>m.QId==j.ToList();
任务添加(vv);
}
}
}
}
}
您只需使用接受IEnumerable
的AddRange
:
Quest.AddRange(vv);
Add
仅用于添加单个项目
如果您实际需要的是列表列表,则以不同的方式声明Quest
:
List<List<Questio>> Quest = new List<List<Questio>>();
...
var vv = db.Questio.Where(m => m.QId == j).ToList();
Quest.Add(vv);
List Quest=newlist();
...
var vv=db.Questio.Where(m=>m.QId==j.ToList();
任务添加(vv);
现在您对Add
的调用应该可以正常工作了
两个旁注,都超出了问题的范围:1)正如评论所说,请回顾您的命名;2) 此代码可以通过更多LINQ功能简化,如Join和SelectMany。列表是用
添加的。AddRange
不是。Add
此代码有很多错误。你什么也不退。Quest
变量从未初始化,因此将引发空引用异常vv
是可枚举项,而不是单个项。等等,等等,你到底想让这段代码做什么?我相信有一个更简单的方法。请,请,修改你的变量命名。你的代码看起来像字母汤。不过,正如在其他评论中提到的那样,修复程序。@SiavashRostami您的意思是您不知道Quest
,Qu
,a
,j
,Quess
和Questio
?@DavidG读了这些名字后,有点忘了如何拼写我的名字了。我仍然需要将Quest初始化为null,因为我遇到了以下错误:无法将System.collection.generic.list转换为System.collection.generic.IEnumerable…@JoeSmith,不,不是null。您想将其初始化为空集合,而在使用列表中,我正在使用unassigned var error如何将其初始化为空collection@JoeSmith,注意这个=newlist()代码>我在答案中有吗?这是正确初始化任务的方法