asp.net-mvc - 如何从多对一关系表中获取唯一记录
问题描述
我被困住了,找不到任何帮助。我要做的是从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();
解决方案
当您想要获取唯一记录时,您需要考虑其他因素,因为您可能有重复的 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
的记录集结果具有唯一性。