我对LINQ很新,我在查询时遇到了一些麻烦。我正在尝试获取与特定组关联的调查(SurveyGroups表是分配表)。但是,一旦我将模型返回到View,我就会得到一个null错误。
这是我到目前为止所做的:
public ActionResult Index()
{
var userID = User.Identity.GetUserId();
var clientID = _db.Users.Where(u => u.Id == userID).Select(u => u.ClientID).FirstOrDefault();
var userGroups = _db.UserGroups.Where(x => x.UserID == userID).ToList();
var groupedSurveys = (from t1 in userGroups
join t2 in _db.SurveyGroups
on t1.GroupID equals t2.GroupID
select new { t2.SurveyID }).ToList();
var surveys = (from t11 in groupedSurveys
join t22 in _db.Surveys.Where(s => s.ClientID == clientID)
on t11.SurveyID equals t22.SurveyID
select new { t22.ClientID, t22.Name}).ToList();
return View("~/Views/User/Dashboard.cshtml", surveys);
}
非常感谢任何指导!
更新:
我收到的错误如下:
传递到字典中的模型项的类型为'System.Collections.Generic.List 1[<>f__AnonymousType6
5 [System.Int32,System.Nullable 1[System.Int32],System.Nullable
1 [System.Int32],System.Nullable 1[System.Int32],System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [SM_XPRESS.Models.Survey]”。
答案 0 :(得分:2)
在这一行:
select new { t22.ClientID, t22.Name}
...您正在根据t22
(调查记录)中的数据创建匿名类型的新实例。
但是,您需要提供给视图的列表需要是Survey实例列表,而不是匿名类型实例列表。
所以将其改为
select t22
你很高兴。