1

Web API プロジェクトがあります。データベースには、コメントと写真の 2 つのテーブルがあります。join を使用してこれら 2 つのテーブルをマージし、すべての画像に関連するすべてのコメントが含まれるようにしたいと考えています。両方のテーブルに画像 ID があります。どの結合を使用すればよいですか? 私はlinqを使う必要があります。誰かが私が使用すべきlinqクエリを教えてもらえますか?

このように、クロスジョインを試みました

var combo = from p in db.picturedetails 
            from c in db.comments
            select new CommentAndPictureDetails
                {
                    IdUser = p.iduser,
                    IdPictures = p.idpictures,
                    Likes = p.likes,
                    NudityLevel = p.nuditylevel,
                    PicTitle = p.picTitle,
                    PicTime = p.pictime,
                    FakesLevel = p.fakeslevel,
                    Comment1 c.comment1,
                    CTime = c.ctime,
                    IdComments = c.idcomments,
                    SpamLevel = c.spamlevel,
                    TargetPictureId = c.targetpictureid
                };

しかし、私はすべてのコメントを含むすべての写真を取得しているので、非常に大きなjsonです。では、どの結合を使用すればよいでしょうか?

4

2 に答える 2

3

グループに参加するために探しているもの:

var query = from p in db.picturedetails
            join c in db.comments
            on p.PictureId equals c.PictureId into comments
            select new
            {
                ID = p.PictureId,
                Comments = comments,
                //...
            };
于 2013-09-24T15:05:08.870 に答える
0

私のLINQの理解はせいぜい限られていますが、あなたが求めていると思うことに答えようとします。

あなたの質問に対する私の理解が進む限り、あなたは次のことを望んでいます:

表1:
PictureID
PictureName

表 2 :
PictureID
コメント

その結果、複数のコメントを含む 1 つの写真が作成されます。これは正しい仮定ですか?

その場合、クエリはすべてのコメントに対して画像を返すため、1 つのクエリでそれが可能であるとは思えません。最善の方法は、1 つの画像オブジェクトを見つけてから、複数のコメント オブジェクトを個別に見つけて、何らかの方法でそれらを返すことです。 1 つのオブジェクトとして表示します。

于 2013-09-24T14:40:58.947 に答える