Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ获取数组中最新项目的数组_C#_Linq_Linq To Entities_Linq To Objects - Fatal编程技术网

C# LINQ获取数组中最新项目的数组

C# LINQ获取数组中最新项目的数组,c#,linq,linq-to-entities,linq-to-objects,C#,Linq,Linq To Entities,Linq To Objects,我有一个包含如下对象的列表: public class ReportViewModel { public string DocumentName { get; set; } = string.Empty; public DateTime? DocumentDate { get; set; } public string DocumentTypeName { get; set; } = string.Empty; } 我希望获得不同的对象列表,在其中我将根据文档类型获取最

我有一个包含如下对象的列表:

public class ReportViewModel
{
    public string DocumentName { get; set; } = string.Empty;
    public DateTime? DocumentDate { get; set; }
    public string DocumentTypeName { get; set; } = string.Empty;
}

我希望获得不同的对象列表,在其中我将根据文档类型获取最新文档,并且只获取每种类型的最新文档。api当前返回带有文档的列表,它可能来自同一文档类型但日期不同的文档,如何仅从每个文档类型中获取最新文档?

您可以使用以下代码在上次创建时区分元素:

using (var db = new YourDocumentDbContext())
{
var documents = db.Documents.AsEnumerable().GroupBy(a => a.DocumentTypeName).Select(a => a.OrderByDescending(a=>a.createdTime).FirstOrDefault());
}

您需要同时使用
GroupBy
FirstOrDefault

假设你有

  Name              DocumentDate      DocumentTypeName   
-------------------------------------------------------
 Document A-1        2021-05-01          A          
 Document A-2        2021-04-28          A
 Document B-1        2021-05-01          B          
 Document B-2        2021-04-28          B
 Document C-1        2021-05-01          C          
 Document C-2        2021-04-28          C
 Document C-3        2021-04-25          C
那么你需要做的是

 var groupedList = reportViewModelList.GroupBy(i => i.DocumentTypeName)
                .Select(i => i.OrderByDescending(o => o.DocumentDate).FirstOrDefault());
它将按预期为您提供以下结果

  Name              DocumentDate      DocumentTypeName   
-------------------------------------------------------
 Document A-1        2021-05-01          A
 Document B-1        2021-05-01          B
 Document C-1        2021-05-01          C

请参阅:

它与“如何从每种文档类型中仅获取最新文档”的问题有何关联?好的,很抱歉回答了这个问题。代码块返回一个列表。在条目中修改了行。