2017-06-07 77 views
0

在我的Web應用程序中,我從數據庫中獲取2個對象列表。基於對象ID加入2個對象列表

第一對象列表員工

1 
    Name: Tom 
    Week1: 1 
    Week2: 3 
    Week3: 7 
2 
    Name: Mike 
    Week1: 2 
    Week2: 1 
    Week3: 7 

對象的第二個列表listOfId

1 
    id: 1 
    color: green 
    symbol: AT 
2 
    id: 2 
    color: red 
    symbol: TB 
3 
    id: 3 
    color: blue 
    symbol: TD 

我希望能夠現在以表格的形式顯示出來,其中用於每個星期,我顯示本週的顏色和符號(每週與Employee.Week#= listOfId.id匹配)

像這樣

Name | Week1 | Week1 Color | Week1 Symbol | Week2 | Week 2 Color etc... 
Tom  1  green   AT   3   blue 
Mike  2  red    TB   1   green 

我總共將有恆定的20周爲每一位員工。

我考慮編寫一個SQL查詢,它將採用周ID,並返回顏色和符號。但對於50人* 20周...我需要運行這個查詢1000次。

我正在尋找更好的方法來解決這一問題

我的模型:

public class WeekViewModel 
    { 
     public int Id{ get; set; } 
     public string ShortNAme { get; set; } 
     public string Description { get; set; } 
     public int Color { get; set; } 
    } 
} 


public class EmployeeWeekViewModel 
{ 
    public string full_name { get; set; } 
    public string location { get; set; } 
    public int week1 { get; set; } 
    public int week2 { get; set; } 
    public int week3 { get; set; } 

} 
+0

是關於如何在查詢數據庫後如何加入2個列表或如何進行單個數據庫查詢的問題? –

+0

將這兩個對象列表合併到一個對象中的最佳方法是什麼,但要在每個星期執行此操作。可能在應用程序中,而不是SQL –

+0

[請不要將標記置於問題標題中](https://stackoverflow.com/help/tagging) – Liam

回答

0

如果我讓你正確的,你有兩個列表從DB來:

  • employeesList其代表僱員與他們相應的星期ID
  • weeksList表示員工的週數。

現在,您想加入這兩個列表以顯示簡單表格格式中的信息。我會做這樣的事情:

public class EmployeeWeekViewModel{ 
    public string EmployeeName{get;set;} 
    public WeekViewModel Week1 {get;set;} 
    public WeekViewModel Week2 {get;set;} 
    ... 
    public WeekViewModel Week20 {get;set;} 
} 

public class WeekViewModel{ 
    public int Id{get;set;} 
    public string Color{get;set;} 
    public string Symbol{get;set;} 
} 

employeesList.Select(t=> new EmployeeWeekViewModel(){ 
    EmployeeName = t.Name, 
    Week1 = weeksList.FirstOrDefault(w => w.id == t.Week1).Select(w => new WeekViewModel(){ 
    Id = w.id, 
    Color = w.color, 
    Symbol = w.symbol 
    }), 
    Week2 = weeksList.FirstOrDefault(w => w.id == t.Week2).Select(w => new WeekViewModel(){ 
    Id = w.id, 
    Color = w.color, 
    Symbol = w.symbol 
    }), 
    ... 
}); 

爲了不使每個星期的請求,我會建議發送給您查詢一週ID的列表,讓他們一次(checkout this example)。

+0

部分地說,這就是我一直在尋找的東西。但我在比較值...(w => w.id == t.Week1)時遇到了一些問題,它無法比較int到WeekViewModel :( –

+0

't.Week1',代表'你從DB –

+0

得到的對象中的第1周屬性,但我仍然沒有得到它,我已經將我的模型添加到該問題中,Week1等是int類型的,它從db返回。 –