首页 > 解决方案 > C# linq 表达式未正确提取数据

问题描述

我正在尝试查询两个表,并且需要从两个表中提取相关记录。我正在使用 enityframeworkcore 3 一个是系统版本表,另一个是历史表。我的结果集仅包含来自历史表而不是系统版本表的数据。有人能告诉我我的陈述有什么问题吗?我确保 systemversion 表中的 personid 与历史表匹配。

在此处输入图像描述

询问

  var personNotes = (from pn in _context.PersonNotes
                              join pnh in _context.PersonNotesHistory on pn.PersonId equals pnh.PersonId
                              select pn);
            return personNotes;

标签: c#linqentity-framework-core

解决方案


您需要指定要在结果中返回的列名:

var personNotes = (from pn in _context.PersonNotes
                              join pnh in _context.PersonNotesHistory on pn.PersonId equals pnh.PersonId
                              select new {
                                           data1 = pn.column1,
                                           data2 = pn.column2,
                                           data3 = pn.column3,
                                           data4 = pnh.column1,
                                           data5 = pnh.column2,
                                           data6 = pnh.column3,


                                          }).ToList();
            return personNotes;

只需更改column1, column2, column3要从数据库中检索的列名。


推荐阅读