如何在ASP.NET Core 3.1 API中显示指定的列数据

如何在ASP.NET Core 3.1 API中显示指定的列数据,asp.net,asp.net-core,asp.net-web-api,Asp.net,Asp.net Core,Asp.net Web Api,这是我的代码: public string LoadAllWeeks(int course_id) { var dbSnapShot = db.CourseWeeks .Include(cw=>cw.WeekQuestions) .ThenInclude(cq => cq.Qn) .ThenInclude(q => q.Answers)

这是我的代码:

public string LoadAllWeeks(int course_id)
        {
            var dbSnapShot = db.CourseWeeks
                .Include(cw=>cw.WeekQuestions)
                .ThenInclude(cq => cq.Qn)
                .ThenInclude(q => q.Answers)
                .Where(c => c.CourseId == course_id);
            var serializedItem = JsonConvert.SerializeObject(dbSnapShot, Formatting.Indented,
                new JsonSerializerSettings
                {
                    PreserveReferencesHandling = PreserveReferencesHandling.Objects,
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                });
            return serializedItem;
        }
这段代码返回每个表的完整数据,但我希望它只返回每个表的第2列数据。我该怎么做?
这些是我得到的json图像。

1。您可以创建包含指定列的视图模型:

var dbSnapShot = _context.People.Include(a => a.Cats).Where(a => a.id == 1)
                        .Select(a => new ViewModel
                        {
                            peepleName = a.peepleName,
                            catName = a.Cats.Select(a=>a.catName).ToList()
                        });
模型(只是一个示例):

显示指定的列:

var dbSnapShot = _context.People.Include(a => a.Cats).Where(a => a.id == 1)
                        .Select(a => new ViewModel
                        {
                            peepleName = a.peepleName,
                            catName = a.Cats.Select(a=>a.catName).ToList()
                        });
2.您也可以使用匿名类型,如下所示:

var dbSnapShot = _context.People.Include(a => a.Cats).Where(a => a.id == 1)
                            .Select(a => new  
                            { 
                                Name =a.peepleName,
                                CName = a.Cats.Select(a=>a.catName)
                            });

您可以创建包含指定列的视图模型。或者您可以使用匿名类。请共享您的模型以及要显示的列。我们使用反向工程方法创建了Asp.NET Core 3.1项目,我们只是在sql server和dbcontext中创建了表,所有模型都是由EF Core自动创建的。因此,我们可以在此创建UserViewModel。我在下面提供了两种简单的方法。您不共享您的模型,所以我只提供一个简单的演示。不客气!)
var dbSnapShot = _context.People.Include(a => a.Cats).Where(a => a.id == 1)
                            .Select(a => new  
                            { 
                                Name =a.peepleName,
                                CName = a.Cats.Select(a=>a.catName)
                            });