1

古いコードを LINQ を使用するように変換しています。古いコードは次のようになります。

// Get Courses
sqlQuery = @"SELECT Comment.Comment, Status.StatusId, Comment.DiscussionBoardId, DiscussionBoard.CourseId, Comment.CommentID
            FROM Status INNER JOIN Comment ON Status.StatusId = Comment.StatusId INNER JOIN
                DiscussionBoard ON Comment.DiscussionBoardId = DiscussionBoard.DiscussionBoardId
            WHERE  (DiscussionBoard.CourseID = 'CourseID')";

var comments = new List<Comment>(dataContext.ExecuteQuery<Comment>(sqlQuery));

上記の SQL を LINQ に変換しました。

var db = new CMSDataContext();
var query = from c in db.Comments
                join s in db.Status on c.StatusId equals s.StatusId
                join d in db.DiscussionBoards on c.DiscussionBoardId equals d.DiscussionBoardId
                where d.CourseId == "CourseID"
                select new      
                {
                    d.ItemType,
                    c.Comment1,
                    s.Status1,
                    c.DiscussionBoardId,
                    d.CourseId,
                    c.CommentID
                };

ただし、私が抱えている問題は、クエリの結果をリストに取得しようとすることです。誰かが私にいくつかの指針を提供できますか?

ありがとう!

4

5 に答える 5

4

ToList()クエリの最後にメソッドを追加してみてください。

于 2013-08-28T14:59:25.713 に答える
2

ToList メソッドはどうですか: query.ToList()?

于 2013-08-28T14:59:34.617 に答える
2

クエリ全体を括弧で囲み、.ToList()最後に追加します。

または別の行を追加します。

var list = query.ToList();
于 2013-08-28T14:59:55.057 に答える
1

2 つのことを行う必要があります。

最初に、匿名型selectの代わりに の新しいインスタンスを作成するように変更します。Comment

次に、クエリ全体を への呼び出しでラップするかToList()、結果を一時変数に格納して、ToList()その変数を呼び出して結果として を取得しますList<Comment>

于 2013-08-28T15:01:50.673 に答える
1

(A) 呼び出し全体を でEnumerable.ToList(<your query>)囲む、(B) クエリ全体を括弧で囲み、ToList最後に拡張メソッドを呼び出す、または (C)query.ToList()別のステートメントとして呼び出します。

于 2013-08-28T15:02:00.903 に答える