扁平化集合我有以下实体(国际化是一个本地化的实体):如何使用的SelectMany
public class Post {
public Int32 Id { get; set; }
public Boolean IsPublished { get; set; }
public List<PostI18N> PostsI18N { get; set; }
public List<Tag> Tags { get; set; }
public Author { get; set; }
}
public class Tag {
public List<TagI18N> TagsI18N { get; set; }
}
public class Author {
public Int32 Id { get; set; }
public String Name { get; set; }
}
public class PostI18N {
public Int32 Id { get; set; }
public String Text { get; set; }
public String Title { get; set; }
}
public class TagI18N {
public Int32 Id { get; set; }
public String Name { get; set; }
}
我需要得到的4个员额的所有信息,所以我试图拉平查询:
var posts = await _context
.Posts
.SelectMany(x => x.PostsI18N, (Post, PostI18N) =>
new { Post, PostI18N, Post.Tags, Post.Author })
.Where(x => x.PostI18N.Language == "en")
.Select(x => new PostDTO {
Id = x.Post.Id,
Title = x.PostI18N.Title,
Text = x.PostI18N.Text,
AuthorName = x.Author.Name
TagsNames = // Names taken from x.Tags.TagsI18N where TagsI18N
// language is "en" ... So, for each tag look the
// one Tag.TagI18N which Tag.TagI18N.Language = "en"
// and get Tag.TagI18N.Name
})
.Take(4)
.ToListAsync();
问题: 的问题是,我还需要TagsI18N压扁,所以我可以把他们的名字对于英语...
SelectMany有可能吗?我应该怎么做?
我不是对你输出清晰正在努力实现。你可以编辑这个问题,并提供一个你想要输出结果的例子吗? –
我只是在PostDTO创建中添加了更多信息。我有问题的列是TagsNames –
@Miguel发布您需要的输出。在你的模型中没有'语言'列和预期的输出。 – Jones