2016-06-09 68 views
0

我有兩個實體與DataID相關。 我需要的是,獲取一個列表或兩個列表來傳遞數據到WPF窗體來顯示。使用分組Linq查詢中的數據創建列表以及來自其他表中的相關數據

public class Journal 
    { 
    [Key] 
    public int ID {get; set;} 


    public int DataID {get; set;} 
[ForeignKey("DataID")] 
public virtual JournalData JournalData { get; set; } 
    } 

    Public class JournalData 
    { 
    [Key] 
    public int DataID {get; set;} 
    public string Field1 { get; set; } 
    public string Field2 { get; set; } 
    } 

First of all I created a lists 
List<Journal> 
List<JournalData> 

在我心中已經極力想從雜誌的數據通過數據ID

List<Journal> result = query 
        .GroupBy(t => t.DataID) 
        .Select(g => new { DataID = g.Key}) 
        .ToList() 
        .Select(t => new Journal() { DatatID = t.DataID }) 
        .ToList(); 

我只有數據ID,現在我想從那裏JournalData =數據ID t.DataID

添加數據分組你可以幫我嗎? Mabe是通過關係獲取相關數據的一種方式嗎?

回答

0

你可能需要includeJournalData在查詢

,你將需要添加以下命名空間

using System.Data.Entity; 

像這樣(未測試)

List<Journal> result = query 
       .Include(t => t.JournalData) 
       .GroupBy(t => t.DataID) 
       .Select(g => new { DataID = g.Key, JornalData = g.JournalData}) 
       .ToList() 
       .Select(t => new Journal() { DatatID = t.DataID, JournalData = t.JournalData }) 
       .ToList(); 

編輯

var result = query.Include(t => t.JournalData) 
        .GroupBy(g => g.DataID)      
        .Select(g => new { DataID = g.Key, JournalData = g.Select(j => j.JournalData) }) 
        .ToList(); 

EDIT2如果你想FIELD1 ,場2緊鄰數據ID這樣的事情

var result = journals.GroupBy(g => g.DataID) 
       .Select(g => new 
       { 
        DataID = g.Key,      
        Fields = g.Select(j => new { Field1 = j.JournalData.Field1, Field2 = j.JournalData.Field2}) 
       })     
       .ToList(); 
+0

我看不到JournalData。選擇(G =>新{數據ID = g.Key,JournalData ...在這裏我也nees Field1和Field2的值:( – Songaila

+0

好會嘗試和測試在linqpad – SWilko

+0

更新的答案:) – SWilko

相關問題