私は MVC3、C# で作業しており、Razor を使用しています。私は一貫して MVC を扱っていないので、常に再学習する必要があります... (指定された州の) 学校のリストと (その学校の) 生徒のネストされたリストを表示するビューが必要ですミドルネームは「ボブ」。
十分に単純に思えますが、これまでのところ解決策を見つけることができません。
例: 見る
メリーランド州の結果
私の最初の学校: - ビリー・ボブ・ジョンソン - サリー・ボブ・シンプソン - アダム・ボブ・ジョーンズ
別の学校: - アーノルド・ボブ・スミス - キャシー・ボブ・パワーズ - ジェニー・ボブ・スミス
他の学校: - バーニー・ボブ・エドソン - スー・ボブ・パーディー - アラン・ボブ・ウォーフィールド
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 などを最大限に活用する方法でデータを取得するにはどうすればよいですか? :)
私はこのようなことを試みていました-しかし、これが正しい方向であるかどうかはわかりません-そして、ボブを設定しようとするとエラーが発生しました. :)
次のようなエラーが表示されます: 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;
}