gpt4 book ai didi

c# - 如何仅包含相关实体的选定属性

转载 作者:行者123 更新时间:2023-12-04 04:30:03 26 4
gpt4 key购买 nike

我只能包括相关实体。

using (var context = new BloggingContext()) 
{
// Load all blogs, all related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}

但是,我不需要整个 BlogPost 实体。我只对特定的属性感兴趣,例如:
using (var context = new BloggingContext()) 
{
// Load all blogs, all and titles of related posts
var blogs2 = context.Blogs
.Include(b => b.Posts.Select(p => p.Title) //throws runtime exeption
.ToList();

foreach(var blogPost in blogs2.SelectMany(b => b.Posts))
{
Console.Writeline(blogPost.Blog.Id); //I need the object graph
Console.WriteLine(blogPost.Title); //writes title
Console.WriteLine(blogPost.Content); //writes null
}
}

最佳答案

您可以使用 Include加载整个实体,或者您将需要的内容投影到 .Select :

var blogs2 = context.Blogs 
.Select(x => new
{
BlogName = x.BlogName, //whatever
PostTitles = x.Post.Select(y => y.Title).ToArray()
})
.ToList();

或者,您可以执行以下操作:
var blogs2 = context.Blogs 
.Select(x => new
{
Blog = x,
PostTitles = x.Post.Select(y => y.Title).ToArray()
})
.ToList();

一个 Select当您不需要整个 child 时总是更好,因为它可以防止查询不需要的数据。

关于c# - 如何仅包含相关实体的选定属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com