2016-06-09 57 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

相关问题