创建用于向ViewModel类分配值的方法linq查询

问题描述

模型类::

public class MappedModels
    {
        [Key]
        public int MappedId { get; set; }
        public int MappedType { get; set; }
        public string MappedDate { get; set; }
        public decimal Mappedamount { get; set; }
        
        [ForeignKey("ProjectId")]
        public ProjectModels Project { get; set; } 
        public int ProjectId { get; set; }

        [ForeignKey("SchoolId")]
        public SchoolModels School { get; set; }
        public int SchoolId { get; set; }
    }
    
public class ProjectModels
    {
        [Key]
        public int ProjectId { get; set; }        
        public string ProjectName { get; set; }        
        public decimal Amount { get; set; }            
    }

viewmodel类::

public class Mappedviewmodels
    {
        public int MappedType { get; set; }
        public string MappedDate { get; set; }
        public decimal Mappedamount { get; set; }

        public int ProjectId { get; set; }
        public string ProjectName { get; set; }
        
        public decimal ProjectAllocatedamount { get; set; } // assigned amount for each project

        public decimal RemainingAmount { get; set; }  // remaining amount from the project amount that can be allocated


        public int SchoolId { get; set; }
    public string SchoolName { get; set; }
}

我已经省略了学校模型课程,因为它仅包含名称和ID。

MappedModels用于将项目金额分配给不同的学校。用户必须从下拉列表中选择学校名称和项目名称。然后将项目金额分配给相应的学校。 在分配金额之前,我想向用户显示实际的项目金额和该项目的剩余金额。

让我们说一下ProjectModels {1,MEEG203,500000}

中的示例数据

假设此ProjectId已映射到数量为300000的学校。

现在,如果用户选择相同的ProjectId来向另一所学校分配金额,我想表明: ProjectAllocatedamount = 500000 剩余金额= 500000-300000 = 200000

我已经计算出了变量all中分配的RemainingAmount。

但是此查询返回的是空值,为什么会这样呢?我无法理解此查询出了什么问题。

public ActionResult Create(int? ProjectId)
        {
// other code blocks ommitted...
        
var result = db.Mappeds.Include(p => p.Project)
                .Where(p => p.ProjectId == ProjectId).Select(x => new Mappedviewmodels()

            {

                ProjectName = x.Project.ProjectName,ProjectAllocatedamount = x.Project.Amount,SchoolName = "",Mappedamount = 0,RemainingAmount = x.Project.Amount - all

            }).ToList().LastOrDefault();
            
return View(result);            
            }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)