0

現在、ネストされたlinqの問題に直面しています。

これが私のテーブルで、現在MVC4RazorWebアプリケーションを開発しています。

student
student_id,studentname,description
book
book_id,student_id,bookname,checkitout
booker
bookerid,book_id,bookername,bookerdescription

表示用のモデルを作成します

public class student_model{
    public int student_id {get;set;}
    public string studentname {get;set;}
    public string bookname {get;set;}
}

こんにちはすべてここに私のテーブルがあり、今私はMVC4RazorWebアプリケーションを開発しています。ブッカー用にネストされたLINQを記述したい。したがって、次のLINQを使用します。

public List<student_model> finder (int stuid){
    var stubk = (from stu in contx.students
        join bk in contx.books on stu.student_id equals bk.student_id
        where stu.student_id == stuid
        select new {
            //here is wrong
            student = from bker in contx.bookers
                where bker.book_id=bk.book_id
                select new student_model{
                    student_id = stu.student_id,
                    studentname = stu.studentname,
                    bookname = bk.bookname
                }   
        }).ToList();

    var next = stubk.Select(md=>md.student)

    return (List<student_model>) next;
}   

ネストされたLINQが間違っています。では、フィルターを作成するにはどうすればよいbookers.book_id = bk.book_idですか?そして、どのように返す必要がありますか(List<student_model)?

ありがとうカエル

4

2 に答える 2

1

このためにブッカーズクラスを使用する必要はまったくないと思います。

この回答は、Entity Frameworkを使用しているため、相互にポイントするクラスにナビゲーションプロパティがあることを前提としています(つまり、BooksにはクラスにStudentのプロパティがあり、StudentにはクラスにBooksのコレクションがあります)。

LINQ拡張メソッドを使用すると、次のように実行できます。

var studentModelList = new List<student_model> ();
contx.Students.Include("Books")
              .Where(stu => stu.student_id == stuid)
              .Select(stu => stu.Books).ToList()
              .ForEach(bookObj => 
                      studentModelList.Add(new student_model { student_id = bookObj.student.student_id, studentname = bookObj.student.studentname, bookname = bookObj.bookname}))
return studentModelList;
于 2013-01-07T03:53:32.497 に答える
0

ネストを削除し、結合を追加します

public List<student_model> finder (int stuid){
    var stubk = (from stu in contx.students
        join bk in contx.books on stu.student_id equals bk.student_id
        join bker in contx.bookers on bk.book_id equals bker.book_id
        where stu.student_id == stuid && bker.book_id=bk.book_id
                select new student_model{
                    student_id = stu.student_id,
                    studentname = stu.studentname,
                    bookname = bk.bookname
                }).ToList();
于 2013-01-07T03:53:15.850 に答える