我正在使用 MVC3、C# 并使用 Razor。我没有始终如一地使用 MVC,所以我经常不得不重新学习东西......我想要一个显示学校列表(来自指定状态)和嵌套学生列表(来自那所学校)的视图中间名“鲍勃”。
看起来很简单,但到目前为止我还没有找到解决方案。
例如:查看
马里兰州的结果
我的第一所学校: - 比利鲍勃约翰逊 - 莎莉鲍勃辛普森 - 亚当鲍勃琼斯
另一所学校: - 阿诺德鲍勃史密斯 - 凯茜鲍勃鲍尔斯 - 珍妮鲍勃史密斯
另一所学校: - Barney Bob Edson - Sue Bob Purdee - Alan Bob Warfield
public class School
{
public int SchoolId {get; set;}
public string Schoolname {get; set;}
public int StateId {get; set;}
}
public class Student
{
public int StudentId {get; set;}
public int SchoolId {get; set;}
public string Firstname {get; set;}
public string Middlename {get; set;}
public string Lastname {get; set;}
}
public class SchoolViewModel
{
public int SchoolId {get; set;}
public string Schoolname {get; set;}
public IEnumerable<Student> Bobs { get; set; }
}
通过使用 JOINS 执行 SELECT 获取列表将为我提供一个需要额外工作才能在 VIEW 中显示的数据集,如上图所示。我在想有一种方法可以让数据集像多维数组一样来获取嵌套的学生列表。但我没有找到这种方法的例子 - 导致我认为那不是方式......??如何以充分利用 LINQ/MVC/ViewModel 等的方式获取数据?:)
我正在尝试这样的事情 - 但不知道这是否是正确的方向 - 当我尝试设置 Bobs 时它给了我一个错误。:)
我收到如下错误:LINQ to Entities 无法识别方法 'System.Linq.IQueryable`1[stuff] GetBobs(stuff)' 方法,并且此方法无法转换为存储表达式。
private IQueryable<SchoolViewModel> GetSchools(int StateId)
{
var query = from s in db.Schools
where s.State == StateId
orderby s.Schoolname
select new SchoolViewModel
{
SchoolId = s.SchoolId,
Name = s.Name,
Bobs = GetBobs(s.SchoolId)
};
var results = query;
return results;
}
private IQueryable<Student> GetBobs(int id)
{
var query = from s in db.Students
where s.Middlename == 'Bob'
where s.SchoolId == id
select s;
var results = query;
return results;
}