Linq 如何获取具有特定Id和LastDate的所有记录

Linq 如何获取具有特定Id和LastDate的所有记录,linq,asp.net-core,entity-framework-core,Linq,Asp.net Core,Entity Framework Core,这是我的桌子 我正在使用.NET3.1和EFcore 我有一个带有输入int[]TermIds的控制器,其中包含一个或多个TermId 现在我想选择其TermId存在于TemrIds中且其statisticDate为最新日期的所有记录 请注意,每个TermId的最长日期与其他TermId不同 | Id | TermID |UniversityId|StatisticDate|FileTypeId|Count| | :----:| :-----:|:---------: |:--------

这是我的桌子 我正在使用.NET3.1和EFcore

我有一个带有输入
int[]TermIds
的控制器,其中包含一个或多个
TermId

现在我想选择其
TermId
存在于
TemrIds
中且其
statisticDate
为最新日期的所有记录

请注意,每个TermId的最长日期与其他TermId不同

| Id    | TermID |UniversityId|StatisticDate|FileTypeId|Count|
| :----:| :-----:|:---------: |:------------|:--------:|:----|
|  1    |126     |5           |2012/01/10   |4         |150  |
|  2    |126     |5           |2012/01/10   |3         |250  |
|  3    |126     |4           |2012/01/10   |4         |127  |
|  4    |126     |4           |2012/01/10   |3         |110  |
|  5    |126     |5           |2011/01/10   |4         |107  |
|  6    |126     |5           |2011/01/10   |3         |99   |
|  7    |126     |4           |2011/01/10   |4         |103  |
|  8    |126     |4           |2011/01/10   |3         |96   |
|  9    |123     |5           |2011/01/01   |4         |88   |
|  10   |123     |5           |2011/01/01   |3         |76   |
|  11   |123     |4           |2011/01/01   |4         |98   |
|  12   |123     |4           |2011/01/01   |3         |99   |
|  13   |123     |5           |2010/01/01   |4         |77   |
|  14   |123     |5           |2010/01/01   |3         |66   |
|  15   |123     |4           |2010/01/01   |4         |33   |
|  16   |123     |4           |2010/01/01   |3         |55   |

最后我想要这张唱片

| Id    | TermID |UniversityId|StatisticDate|FileTypeId|Count|
| :----:| :-----:|:---------: |:------------|:--------:|:----|
|  1    |126     |5           |2012/01/10   |4         |150  |
|  2    |126     |5           |2012/01/10   |3         |250  |
|  3    |126     |4           |2012/01/10   |4         |127  |
|  4    |126     |4           |2012/01/10   |3         |110  |
|  9    |123     |5           |2011/01/01   |4         |88   |
|  10   |123     |5           |2011/01/01   |3         |76   |
|  11   |123     |4           |2011/01/01   |4         |98   |
|  12   |123     |4           |2011/01/01   |3         |99   |

根据我的理解,这是一个linq查询。这应该只过滤出
TermID
上存在
TermID
的记录,
StatisticDate
是每个术语的最大日期

        using System.Linq;

        int[] termIds = new int[] { 126, 127 };

        List<Foo> data = new List<Foo>()
        {
            new Foo() { Id = 1, TermID = 126, UniversityId = 5, StatisticDate = new DateTime(2012, 01, 10), FileTypeId = 4, Count = 150 },
            new Foo() { Id = 2, TermID = 126, UniversityId = 5, StatisticDate = new DateTime(2012, 01, 10), FileTypeId = 3, Count = 250 },
            new Foo() { Id = 3, TermID = 126, UniversityId = 4, StatisticDate = new DateTime(2012, 01, 10), FileTypeId = 4, Count = 127 },
            new Foo() { Id = 4, TermID = 126, UniversityId = 4, StatisticDate = new DateTime(2012, 01, 10), FileTypeId = 3, Count = 110 },
            new Foo() { Id = 5, TermID = 126, UniversityId = 5, StatisticDate = new DateTime(2011, 01, 10), FileTypeId = 4, Count = 107 },
        };

        var records = data.Where(r => termIds.Contains(r.TermID) && r.StatisticDate == data.Where(x => x.TermID == r.TermID).Max(x => x.StatisticDate));
使用System.Linq;
int[]termIds=newint[]{126127};
列表数据=新列表()
{
new Foo(){Id=1,TermID=126,UniversityId=5,StatisticDate=new DateTime(2012,01,10),FileTypeId=4,Count=150},
new Foo(){Id=2,TermID=126,UniversityId=5,StatisticDate=new DateTime(2012,01,10),FileTypeId=3,Count=250},
new Foo(){Id=3,TermID=126,UniversityId=4,StatisticDate=new DateTime(2012,01,10),FileTypeId=4,Count=127},
new Foo(){Id=4,TermID=126,UniversityId=4,StatisticDate=new DateTime(2012,01,10),FileTypeId=3,Count=110},
new Foo(){Id=5,TermID=126,UniversityId=5,StatisticDate=new DateTime(2011,01,10),FileTypeId=4,Count=107},
};
var记录=数据。其中(r=>termIds.Contains(r.TermID)&&r.StatisticDate==data.Where(x=>x.TermID==r.TermID).Max(x=>x.StatisticDate));

查看表格,对于TermId 126,最后日期是2012/01/10,但是对于TermId 123,最后日期是2011/01/01。现在我想要(例如)所有记录(TermId=123,statisticDate=2011/01/01),这是所有123TermId的最大日期。是的,jegtugado非常感谢。这正是我想要的