C# LINQ查询以获取具有最大值的记录

C# LINQ查询以获取具有最大值的记录,c#,linq,C#,Linq,我在一个表中有以下值,我需要一个满足以下条件的LINQ查询 选择具有最大RevOrder的单个记录。 如果有多条记录具有相同的最大RevOrder,则选择具有最大RevDate的记录 如果RevDate也相等,则获取具有最大RevisionStatusID的记录 RevisionStatusID RevDate RevOrder 1 12/01/2012 0 2 14/02/201

我在一个表中有以下值,我需要一个满足以下条件的LINQ查询

选择具有最大RevOrder的单个记录。 如果有多条记录具有相同的最大RevOrder,则选择具有最大RevDate的记录 如果RevDate也相等,则获取具有最大RevisionStatusID的记录

RevisionStatusID      RevDate         RevOrder
1                     12/01/2012      0
2                     14/02/2013      1
3                     10/02/2013      2
4                     11/01/2013      2
5                     11/01/2013      3
我尝试了下面的查询,但它给出了一个错误

var DocRevIDs = (from tbh in context.tblDocumentHeaders
                 join tbr in context.tblDocumentRevisions
                 on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
                 where tbh.DocumentHeaderID == tb.DocumentHeaderID
                 select tbr).Max(o => new { o.RevOrder,o.RevisionDate,o.DocumentRevisionID });
无法处理该类型 'f_uAnonymousType52
3[System.Nullable
1[System.Double],System.Nullable`1[System.DateTime],System.Int32], 因为它没有到值层的已知映射


不要尝试使用
Max()
,而是组合使用
orderby
子句,然后使用
FirstOrDefault()
。这将是通过直接SQL实现的方法

这会给你一些类似的东西:

var docRevision = (from tbh in context.tblDocumentHeaders
                 join tbr in context.tblDocumentRevisions
                 on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
                 where tbh.DocumentHeaderID == tb.DocumentHeaderID
                 orderby tbr.RevOrder descending, tbr.RevisionDate descending, tbr.DocumentRevisionID descending
                 select tbr).FirstOrDefault();

不要尝试使用
Max()
,而是组合使用
orderby
子句,然后使用
FirstOrDefault()
。这将是通过直接SQL实现的方法

这会给你一些类似的东西:

var docRevision = (from tbh in context.tblDocumentHeaders
                 join tbr in context.tblDocumentRevisions
                 on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
                 where tbh.DocumentHeaderID == tb.DocumentHeaderID
                 orderby tbr.RevOrder descending, tbr.RevisionDate descending, tbr.DocumentRevisionID descending
                 select tbr).FirstOrDefault();

不要尝试使用
Max()
,而是组合使用
orderby
子句,然后使用
FirstOrDefault()
。这将是通过直接SQL实现的方法

这会给你一些类似的东西:

var docRevision = (from tbh in context.tblDocumentHeaders
                 join tbr in context.tblDocumentRevisions
                 on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
                 where tbh.DocumentHeaderID == tb.DocumentHeaderID
                 orderby tbr.RevOrder descending, tbr.RevisionDate descending, tbr.DocumentRevisionID descending
                 select tbr).FirstOrDefault();

不要尝试使用
Max()
,而是组合使用
orderby
子句,然后使用
FirstOrDefault()
。这将是通过直接SQL实现的方法

这会给你一些类似的东西:

var docRevision = (from tbh in context.tblDocumentHeaders
                 join tbr in context.tblDocumentRevisions
                 on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
                 where tbh.DocumentHeaderID == tb.DocumentHeaderID
                 orderby tbr.RevOrder descending, tbr.RevisionDate descending, tbr.DocumentRevisionID descending
                 select tbr).FirstOrDefault();

您应该在linq中订购记录:

var DocRevIDs = (from tbh in context.tblDocumentHeaders
             join tbr in context.tblDocumentRevisions
             on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
             where tbh.DocumentHeaderID == tbr.DocumentHeaderID
             orderby tbr.RevOrder descending, tbr.RevDate descending, tbr.RevisionStatusID descending
             select tbr).First();

您应该在linq中订购记录:

var DocRevIDs = (from tbh in context.tblDocumentHeaders
             join tbr in context.tblDocumentRevisions
             on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
             where tbh.DocumentHeaderID == tbr.DocumentHeaderID
             orderby tbr.RevOrder descending, tbr.RevDate descending, tbr.RevisionStatusID descending
             select tbr).First();

您应该在linq中订购记录:

var DocRevIDs = (from tbh in context.tblDocumentHeaders
             join tbr in context.tblDocumentRevisions
             on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
             where tbh.DocumentHeaderID == tbr.DocumentHeaderID
             orderby tbr.RevOrder descending, tbr.RevDate descending, tbr.RevisionStatusID descending
             select tbr).First();

您应该在linq中订购记录:

var DocRevIDs = (from tbh in context.tblDocumentHeaders
             join tbr in context.tblDocumentRevisions
             on tbh.DocumentHeaderID equals tbr.DocumentHeaderID
             where tbh.DocumentHeaderID == tbr.DocumentHeaderID
             orderby tbr.RevOrder descending, tbr.RevDate descending, tbr.RevisionStatusID descending
             select tbr).First();

这是一个实体框架错误。如何使用DocRevIDs
DocRevIDs
;这是一个实体框架错误。如何使用DocRevIDs
DocRevIDs
;这是一个实体框架错误。如何使用DocRevIDs
DocRevIDs
;这是一个实体框架错误。如何使用DocRevIDs
DocRevIDs