首页 > 解决方案 > 如何从多对一关系表中获取唯一记录

问题描述

我被困住了,找不到任何帮助。我要做的是从STUDENTS_DETAILS表中按ID获取唯一记录。STUDENTS_DETAILS表与STUDENTS具有多对一关系。

var query = (from x in OracleDb.STUDENTS_DETAILS
             join y in OracleDb.STUDENTS on x.ID equals y.ID
             select new StudentViewModel()
             {
                 ID = x.ID,
                 APPLICATION_DATE = x.APPLICATION_DATE,
                 STUDENT_JOINED_DATE = y.STUDENT_JOINED_DATE,
                 SCHEME = y.SCHEME
             }).OrderByDescending(a => a.APPLICATION_DATE).ToList();

标签: asp.net-mvclinqentity-framework-5

解决方案


当您想要获取唯一记录时,您需要考虑其他因素,因为您可能有重复的 ID 记录,例如 @ Rahatur在他的回答中提到的这个示例:

 { ID = 1, SCHEME = "A" }; 
 { ID = 1, SCHEME = "B" }; 

它们可能有重复的 ID 记录,但它们是唯一的,因为它们具有唯一的 Scheme 字段。这是你的考虑之一。现在,如果这与您需要的结果无关,并且您只想获得ID记录的唯一性,那么您可能想试试这个:

var result = query.GroupBy(y => y.ID).Select(y => y.FirstOrDefault()).ToList();

这将获得序列的第一个元素,并确保您ID的记录集结果具有唯一性。


推荐阅读