【问题标题】:Create list with data from grouped Linq query plus related data from another table使用来自分组 Linq 查询的数据以及来自另一个表的相关数据创建列表
【发布时间】:2016-06-09 12:16:30
【问题描述】:

我有两个通过 DataID 关联的实体。 我需要的是,获取一个列表或两个列表以将数据传递给 WPF 表单以显示。

    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>

当我尝试从按 DataID 分组的 Journal 中获取数据时

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

我只有 DataID,现在我想从 JournalData 添加数据,其中 DataID =t.DataID

你能帮帮我吗? Mabe 是一种通过关系获取相关数据的方法吗?

【问题讨论】:

    标签: c# wpf linq devexpress-wpf


    【解决方案1】:

    您可能需要在查询中使用include JournalData

    您需要添加以下命名空间

    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 如果你想在 DataID 旁边的 field1、field2 像这样

    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();
    

    【讨论】:

    • 我看不到 JournalData .Select(g => new {DataID = g.Key, JournalData ... 这里我还需要 Field1 和 Field2 值 :(
    • 我看不到其他表格数据 :( .Include(t => t.JournalData)
    • 以及如何在我可以传递给 WPF 表单的列表中的 DataID 附近获取这些值“Field1”“Field2”?
    • 嗨@Sogaila 我将提供最终更新,但它确实应该是一个新问题,否则 cmets 将永远持续下去并且变得不可读。请标记为正确答案thx
    • 谢谢...我找不到在哪里将您的答案标记为正确答案:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多