2

表:如何編寫linq查詢來獲取結果表?

ID  State Rate 
2  NY  8 
1  CA  10 
1  NY  9 
2  IL  7 
2  WA  8 
1  WA  5 

Linq的結果表:

ID  State ApprovedR Not-ApprovedR 
2  NY   8   9 
1  CA   0   10 
2  IL   7   0 
2  WA   8   5 

房價的ID=1記錄被視爲Not-ApprovedR, 如果記錄沒有和ID 1那麼它Not-ApprovedR應顯示爲0

+0

謝謝斯蒂芬我是新來的堆棧溢出。我不知道如何在問題 – blackbookstar

+0

中放置一張桌子無法理解這一點。你的第二條記錄有'ID = 1',你認爲它應該在'Not-ApprovedR'列中有'Rate',但這不是第二個表所示的(它在'ApprovedR'列中 –

+0

所有的行都應該有'ApprovedR'或'Not-ApprovedR'設置爲'0'的權利?*編輯:您需要在您的文章中明確地定義您的需求,並嘗試顯示您到目前爲止已嘗試過的內容 – uTeisT

回答

1

首先創建一個視圖模型來表示你的第二個表結構

public class MyViewModel 
{ 
    public int ID { get; set; } 
    public string State { get; set; } 
    public int ApprovedR { get; set; } 
    public int Not-ApprovedR { get; set; } 
} 

然後通過State使用.GroupBy()分組和結果投射到您的視圖模型

var data = db.yourTable.GroupBy(x => x.State).Select(x => new MyViewModel() 
{ 
    ID = x.Max(y => y.ID), 
    State = x.Key, 
    ApprovedR = x.Where(y => y.ID != 1).Sum(y => y.Rate), 
    Not-ApprovedR = x.Where(y => y.ID == 1).Sum(y => y.Rate), 
}); 

旁註。當它不是一個唯一的標識符會讓人困惑時,命名一個字段ID,我建議您更改該屬性的名稱。