扁平化集合我有以下實體(國際化是一個本地化的實體):如何使用的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