c# – LINQ MVC ViewModel:使用可选字段连接到同一个表

c# – LINQ MVC ViewModel:使用可选字段连接到同一个表,第1张

概述给出以下数据库结构 类别 ID CategoryNameResID ParentCategory(可选) 资源 ID 文本 郎 并给出了一个ViewModel public class CategoryViewModel{ public int ID { get; set; } public int CategoryNameResID { get; set; } publ 给出以下数据库结构

类别

ID
categorynameResID
Parentcategory(可选)

资源

ID
文本

并给出了一个viewmodel

public class categoryviewmodel{    public int ID { get; set; }    public int categorynameResID { get; set; }    public string categoryname { get; set; }    public int Parentcategory { get; set; }    public string Parentcategoryname { get; set; }}

我想获得包含Parentcategoryname的所有类别的列表

到目前为止我所做的是:

var categorIEs = (from cat in db.CategorIEs                  join res in db.Resources on cat.categorynameResID equal res.ID                  select new categoryviewmodel{ID = cat.ID,categorynameResID = cat.categorynameResID,categoryname = res.Text,Parentcategory = cat.Parentcategory,Parentcategoryname = (from p in db.Resourceswhere p.ID == cat.Parentcategoryselect p.Text)}).ToList();

我无法弄清楚如何获取Parentcategoryname而不必再次迭代,这绝对是错误的.

解决方法 试试这个:

(from cat in catsjoin res in resources on cat.ResID equals res.ID let categoryname = res.Textjoin cat1 in cats on cat.ParentID equals cat1.ID into parentJoinfrom pj in parentJoin.DefaultIfEmpty() let parentCatResID =pj==null?0: pj.ResIDjoin res1 in resources on parentCatResID equals res1.ID into resJoinfrom res2 in resJoin.DefaultIfEmpty() let parentname = (res2==null?string.Empty:res2.Text)    select new categoryVM    {        ID = cat.ID,ResID = cat.ResID,Catname = categoryname,ParentID = cat.ParentID,Parentname = parentname    }).ToList();
总结

以上是内存溢出为你收集整理的c# – LINQ MVC ViewModel:使用可选字段连接到同一个表全部内容,希望文章能够帮你解决c# – LINQ MVC ViewModel:使用可选字段连接到同一个表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存