2016-07-17 7 views
-2

は私のオフィスモデルはは、テーブルに参加して、モデルMVC、LINQへのC#の名前を取る、ここでモデル

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; } 
    } 

あるすべての労働者を得ることですOfficeColorとLINQでOfficeID指定した色

+1

が '' Office'(へOfficeID'ナビゲーションプロパティですので、 'ワーカー'モデルがない場合も含めます'パブリック仮想オフィスオフィス{get;セット; } ' –

+1

' asp.net-mvc'タグは無関係です。 'linq'タグが広すぎます。 Linqに何を?オブジェクト? SQL? EF? EFの場合、どのバージョン(EF 6、EFコア)ですか? –

+1

OfficeColorがマップされていない場合、データベースからのこのプロパティに関するデータはありません。あなたは何を達成しようとしていますか?あなたは例を書くことができますか? –

答えて

0

の色は、次の試してみてください。

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>(); 
     } 
    } 
} 
+1

申し訳ありませんが、正しく説明していない可能性があります。私が手に入れたいのは私の労働者全員のリストであり、すべての労働者は同じようにすべきです。 [ID:1、OfficeID:2、FullName: "John"、OfficeColor: "Red"]]、[ID:2、OfficeID:3、FullName: "Peter"、OfficeColor: "Brown"]] [[ ID:3、OfficeID:2、FullName: "Helen"、OfficeColor: "Red"]] –

+1

私はコードを更新しました。選択を変更する必要がありました。 – jdweng

1

2つのEFモデル(コードの最初のアプローチ)との関係を作るための適切な方法は:

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(); 
    } 
} 
+1

sry manだがあなたのコードは誤りの略奪品を与える –

+2

私はここでintellisenceなしで書く。ただ抽象として。あなたはあなたのために働くためにコードを適合させる必要があります。 – mihkov

関連する問題