我正在尝试从表格文章中获取文章列表,其中列出了每篇文章的类别列表。假设文章“A”有 3 个类别“1”、“2”、“3”,而我的文章不止一个类别。我想在ArticleViewModel列表中获取CategoryViewModel列表。因为它是 IEnumerableList,所以当我使用 FirstOrDefault() 时,我在每篇文章下得到相同的类别名称,但我得到的文章数量是正确的。我如何在文章(列表)中获取类别名称(列表)。
ArticleViewModel 类
公共类 ArticleViewModel
{
公共 int ArticleID { 获取;放; }
公共 int AuthorID { 获取;放; }
公共字符串作者姓名 { 获取;放; }
公共字符串用户名 { 获取;放; }
公共字符串蛞蝓{得到;放; }
公共字符串标题 { 获取;放; }
公共字符串 ArticleContent { 获取;放; }
公共日期时间 PostDate { 获取;放; }
公共 Nullable 更新日期 { 获取;放; }
公共 int ArticleCategoryID { 获取;放; }
公共 int 类别 ID { 获取;放; }
公共 IEnumerable 类别名称 { 获取;放; }
公共 int TagID { 获取;放; }
公共字符串 TagName { 获取;放; }
}
类别视图模型类
公共类 CategoryViewModel
{
公共 int 类别 ID { 获取;放; }
公共字符串类别名称 { 获取;放; }
}
文章分类
公共部分类 ArticleCategory
{
公共 int ArticleCategoryID { 获取;放; }
公共 int ArticleID { 获取;放; }
公共 int 类别 ID { 获取;放; }
公共虚拟文章文章{获取;放; }
公共虚拟类别类别{获取;放; }
询问
结果 =(来自 db.Articles 中的文章
加入 db.ArticleCategories 中的 articlecategories.ArticleID 等于 articlecategories.ArticleID
在 articlecategories.CategoryID 上的 db.Categories 中加入 cat 等于 cat.CategoryID
在文章中加入 db.Authors 中的身份验证。AuthorID 等于 auth.AuthorID
选择新的 ArticleViewModel
{
AuthorName = auth.AuthorName,
用户名 = auth.UserName,
CategoryNames =(来自 db.Articles 中的 a
//来自 db.ArticleCategories 中的 ca
//从c in db.Categories group c by c.CategoryName into group1
在 articlecategories.ArticleID 上的 db.ArticleCategories 中加入 ca 等于 ca.ArticleID
在 cat.CategoryID 上的 db.Categories 中加入 c 等于 c.CategoryID 进入 group1
选择新的 CategoryViewModel
{
CategoryName = (从 group1 中的 group2 选择 group2.CategoryName).FirstOrDefault()
// CategoryID = (from group2 in group1 select group2.CategoryID).FirstOrDefault()
}),
标题=文章。标题,
蛞蝓=文章.蛞蝓,
文章内容 = 文章.文章内容,
PostDate = 文章.PostDate
}).GroupBy(a => a.Title).Select(a => a.FirstOrDefault()).OrderByDescending(article => article.PostDate).ToList().ToPagedList(pageIndex, pageSize);