Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
Entity framework 通过linq查询获取组中最新记录的ID_Entity Framework_Linq - Fatal编程技术网

Entity framework 通过linq查询获取组中最新记录的ID

Entity framework 通过linq查询获取组中最新记录的ID,entity-framework,linq,Entity Framework,Linq,下面的linq查询包含一些连接,我需要获取一个实体的最新记录Id,其Id字段为“sonuc” var query = (from type1 in lohusaHastaRepo join type2 in hastaRepo on lohusa.HastaTC equals hasta.HastaTC join type3 in gebeSonucBildirimRepo on lohusa.HastaTC equals sonuc.HastaTC group type

下面的linq查询包含一些连接,我需要获取一个实体的最新记录Id,其Id字段为“sonuc”

var query = (from type1 in lohusaHastaRepo
    join type2 in hastaRepo on lohusa.HastaTC equals hasta.HastaTC
    join type3 in gebeSonucBildirimRepo on lohusa.HastaTC equals sonuc.HastaTC
    group type1 by hasta.HastaTC into grp
    select new SomeModel()
    {
        Type3ID = 0,//I want to get 'ID' of latest records of 'sonuc' entity 
        Type1ID = grp.OrderByDescending(o=>o.BirthDate).Select(s=>s.ID).FirstOrDefault()
    });
这:

上面给了我'type1'实体的Id,我还需要'type3'的Id


我怎样才能做到这一点?

我认为应该这样做:

var query = (from type1 in lohusaHastaRepo
    join type2 in hastaRepo on lohusa.HastaTC equals hasta.HastaTC
    join type3 in gebeSonucBildirimRepo on lohusa.HastaTC equals sonuc.HastaTC
    group new {type1, type3} by hasta.HastaTC into grp
    select new SomeModel()
    {
        Type3ID = grp
            .Select(e => e.type3)
            .OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault(),
        Type1ID = grp
            .Select(e => e.type1)
            .OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault(),
    });
不过,我不能说它的表现会有多好。您可能希望在大型数据集上测试它,并考虑将其拆分为两个独立的往返行程:

var type1IDs = sonuc.GroupBy(s => s.HastaTC)
    .Select(g => new 
    {
        HastaTC = g.Key,
        ID = g.OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault()
    });

var type3IDs = lohusa.GroupBy(s => s.HastaTC)
    .Select(g => new 
    {
        HastaTC = g.Key,
        ID = g.OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault()
    });

@我编辑了这篇文章,希望对你有所帮助
var type1IDs = sonuc.GroupBy(s => s.HastaTC)
    .Select(g => new 
    {
        HastaTC = g.Key,
        ID = g.OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault()
    });

var type3IDs = lohusa.GroupBy(s => s.HastaTC)
    .Select(g => new 
    {
        HastaTC = g.Key,
        ID = g.OrderByDescending(o=>o.BirthDate)
            .Select(s=>s.ID)
            .FirstOrDefault()
    });