C# ASP.NET REST API返回数组

C# ASP.NET REST API返回数组,c#,.net,rest,C#,.net,Rest,我一般不熟悉asp.net和c#,正在构建RESTAPI。我主要在那里学习了很多教程,包括 这帮了大忙 我正在努力的一个领域是返回一组外键控对象 我有一个id为的对象,例如活动和各种其他数据。我还有另一个对象,例如ImageReference,它也有一个id,还有一个activityID的外键。活动可以有许多与ImageReference相关的对象 对于RESTAPI,在获取该活动后,我希望返回所有相关的(外键)ImageReference。我已经找到了如何返回单个相关对象: [Rout

我一般不熟悉asp.net和c#,正在构建RESTAPI。我主要在那里学习了很多教程,包括 这帮了大忙

我正在努力的一个领域是返回一组外键控对象

我有一个id为的对象,例如活动和各种其他数据。我还有另一个对象,例如ImageReference,它也有一个id,还有一个activityID的外键。活动可以有许多与ImageReference相关的对象

对于RESTAPI,在获取该活动后,我希望返回所有相关的(外键)ImageReference。我已经找到了如何返回单个相关对象:

    [Route("~/api/locations/{zip}/activities")]
    public IQueryable<ActivityDto> GetActivitiesByZip(int zip)
    {
        return db.Activities.Include(b => b.Location)
            .Where(b => b.Location.Zip == zip)
            .Select(AsActivityDto);
    }
[Route(“~/api/locations/{zip}/activities”)]
公共IQueryable GetActivitiesByZip(int-zip)
{
返回db.Activities.Include(b=>b.Location)
.Where(b=>b.Location.Zip==Zip)
.选择(AsActivityDto);
}

[路由(“{id:int}”)]
[ResponseType(类型of(ActivityDto))]
公共异步任务GetActivity(int id)
{
ActivityDto activity=await db.Activities.Include(b=>b.Location)
.其中(b=>b.Id==Id)
.选择(AsActivityDto)
.FirstOrDefaultAsync();
如果(活动==null)
{
返回NotFound();
}
返回Ok(活动);
}
但是,我不知道如何返回多个相关对象。我正在寻找返回类似于:

 <ActivityDto>
 <Id>3</Id>
 <Name>Activity Name</Name>
 <Zip>80204</Zip>
 <ImageReference>
     <Id>1</Id>
     <ImageURL>
       https://example.net/images/f869ce1c8414a264bb11e14a2c8850ed
     </ImageURL>
     <Id>2</Id>
     <ImageURL>
       https://example.net/images/kC9gANXxMIi8fWj1BbY2ntZ9SaLo3
     </ImageURL>
 </ImageReference>
 </ActivityDto>

3.
活动名称
80204
1.
https://example.net/images/f869ce1c8414a264bb11e14a2c8850ed
2.
https://example.net/images/kC9gANXxMIi8fWj1BbY2ntZ9SaLo3

我真诚地感谢你的帮助

我想您正在寻找这个,您可以链接包含的内容

[Route("{id:int}")]
[ResponseType(typeof(ActivityDto))]
public async Task<IHttpActionResult> GetActivity(int id)
{
    ActivityDto activity = await db.Activities.Include(b => b.Location)
        .Include(act => act.ImageReferences)
        .Include(act => act.Location.ObjectInLocation)          
        .Where(b => b.Id == id)
        .Select(AsActivityDto)
        .FirstOrDefaultAsync();
    if (activity == null)
    {
        return NotFound();
    }

    return Ok(activity);
}
[路由(“{id:int}”)]
[ResponseType(类型of(ActivityDto))]
公共异步任务GetActivity(int id)
{
ActivityDto activity=await db.Activities.Include(b=>b.Location)
.Include(act=>act.ImageReferences)
.Include(act=>act.Location.ObjectInLocation)
.其中(b=>b.Id==Id)
.选择(AsActivityDto)
.FirstOrDefaultAsync();
如果(活动==null)
{
返回NotFound();
}
返回Ok(活动);
}
这是与这些类有关的

public class Location
{
    public X ObjectInLocation{get;set;}
}

public ImageReference
{
    public int Id{get;set;}
    public string ImageUrl{get;set;}
}

public class Activity
{

    public Location Location{get;set;}
    public IEnumerable<ImageReference> ImageReferences{get;set;}

}
公共类位置
{
公共X对象位置{get;set;}
}
公共图像参考
{
公共int Id{get;set;}
公共字符串ImageUrl{get;set;}
}
公共课堂活动
{
公共位置位置{get;set;}
公共IEnumerable ImageReferences{get;set;}
}

调用这些端点时会发生什么?你得到了什么回应?你希望得到什么?@scheien刚刚编辑以添加更多上下文-谢谢!它现在返回什么?@scheien只是活动,3活动名称80204我希望它包括相关的ImageReferences,而不仅仅是activity@BobInternet检查我的答案
public class Location
{
    public X ObjectInLocation{get;set;}
}

public ImageReference
{
    public int Id{get;set;}
    public string ImageUrl{get;set;}
}

public class Activity
{

    public Location Location{get;set;}
    public IEnumerable<ImageReference> ImageReferences{get;set;}

}