我有以下两个对象:
public class BlogPost
{
public int BlogPostId { get; set; }
public Author Author { get; set; }
}
public class Author
{
public int AuthorId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
我有两个单独的50个Blog Post对象列表和50个Author对象。如何组合这两者,以便将Author对象分配给Blog Post的Author属性?
我尝试过使用Zip
方法,但我认为这不是我想要的。这个question类似,但我希望value
成为另一个列表中的对象。
上下文:使用EntityFramework中的Seed方法填充我的数据库。
编辑: 我应该提到,因为它是种子数据,我真的不关心哪个作者与哪个BlogPost相匹配。因此,我试图使用Zip方法。
答案 0 :(得分:1)
如果BlogPost
和Author
对象通过索引链接,您可以使用for
- 循环:
for(int i = 0; i < blogPosts.Count; i++)
blogPosts[i].Author = authors[i];
您可以使用像Zip
这样的LINQ方法,但是您必须从旧方法创建新对象并填充新列表。如果要修改原始集合,for
- 循环更合适(也更有效)。您也可以只修改单个属性而无需复制所有属性。
所以这也有效,但不是最好的方法(考虑BlogPost
有100个属性):
blogPosts = blogPosts.Zip(authors, (bp, a) => new BlogPost
{
BlogPostId = bp.BlogPostId,
Author = a
}).ToList();
但是这个要求提出了一个问题,即为什么你没有正确地初始化BlogPost列表。为什么你需要两个独立的收藏?
答案 1 :(得分:1)
您的博客实体需要维护FK AuthorId。当你这样做时,你可以:
List<List<string>>