C# 联接表并将名称放入模型MVC、LINQ、C、模型中

C# 联接表并将名称放入模型MVC、LINQ、C、模型中,c#,asp.net-mvc,linq,select,C#,Asp.net Mvc,Linq,Select,这是我的办公室模型 public class Office { public int ID { get; set; } public string Color { get; set; } } 这是我的工人模型 public class Worker { public int ID { get; set; } public int OfficeID { get; set; } public

这是我的办公室模型

public class Office 
    {
        public int ID { get; set; }
        public string Color { get; set; }
    }
这是我的工人模型

public class Worker 
    {
        public int ID { get; set; }
        public int OfficeID { get; set; }
        public string FullName { get; set; }
        [NotMapped]
        public string OfficeColor { get; set; }
    }
我想要的是让所有使用LINQ with OfficeColor的工作人员使用指定的OfficeID颜色

尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string myColor = "Red";
            var results = (from office in Office.offices
                           join worker in Worker.workers on office.ID equals worker.ID
                           select new { office = office, worker = worker })
                            .Where(x => x.office.Color == myColor)
                            .Select(x => new {
                                ID = x.worker.ID,
                                OfficeID = x.worker.OfficeID, 
                                FullName = x.worker.FullName, 
                                OfficeColor = x.office.Color  
                            }).ToList();

        }
    }
    public class Office
    {
        public static List<Office> offices { get; set; }
        public int ID { get; set; }
        public string Color { get; set; }
        public Office()
        {
            office = new Office();
        }
    }
    public class Worker
    {
        public static List<Worker> workers { get; set; }
        public int ID { get; set; }
        public int OfficeID { get; set; }
        public string FullName { get; set; }
        //[NotMapped]
        public string OfficeColor { get; set; }
        public Worker()
        {
            workers = new List<Worker>();
        }
    }
}

建立两个EF模型之间关系的正确方法代码优先法:


OfficeID是Office的导航属性吗?如果是,Worker模型是否还包括公共虚拟办公室Office{get;set;}asp.net-mvc标记不相关。linq标签太宽了。林克:什么?物体?SQL?EF?如果EF,哪个版本EF 6,EF Core?如果未映射OfficeColor,则数据库中没有关于此属性的数据。你想达到什么目标?你能写一个例子吗?请展示你自己的第一次努力,因为他们可能会阐明你的努力目标。对不起,我可能没有正确解释。我想得到的是我所有员工的名单,每个员工都应该是这样的。[ID:1,办公室ID:2,全名:约翰,办公室颜色:红色]],[ID:2,办公室ID:3,全名:彼得,办公室颜色:棕色][[ID:3,办公室ID:2,全名:海伦,办公室颜色:红色]]我更新了代码。选择需要修改。sry man,但是你的代码有很多错误。我在没有智能的情况下把它写在这里。就像一个抽象。你应该让代码适合你。
public class Worker 
{
    public int ID { get; set; }
    public int OfficeID { get; set; }
    public virtual Office Office { get; set; }
    public string FullName { get; set; }
    // [NotMapped]
    // public string OfficeColor { get; set; }
}

public class Office 
{
    private ICollection<Worker> workers;

    public Office 
    {
       this.workers = new HashSet<Worker>();
    } 

    public int ID { get; set; }
    public string Color { get; set; }
    public virtual ICollection<Worker> Workers
    {
        get { return this.workers; }
        set { this.workers = value; }
    }
}

// and get all workers from Db
public class Program
{
     public static void Main()
     {
       IEnumerable<WorkerViewModel> workers = DbContext.Workers.All().Select(w => 
          new WorkerViewModel()
          {
               Id = w.Id,
               OfficeId = w.Office.Id,
               FullName = w.FullName,
               OfficeColor = w.Office.Color
          })
          .ToList();
     }
}