使用LINQ从另一个LINQ集合中获取结果

Jos*_*osh 6 c# linq

我有一个LINQ语句从一个集合中提取前N个记录ID,然后是另一个查询,它提取所有具有这些ID的记录.它感觉非常笨重和低效,我想知道是否有更简洁,LINQy的方式来获得相同的结果

var records = cache.Select(rec => rec.Id).Distinct().Take(n);

var results = cache.Where(rec => records.Contains(rec.Id));
Run Code Online (Sandbox Code Playgroud)

仅供参考 - 将有多个具有相同ID的记录,这就是为什么有Distinct()以及为什么我不能首先使用简单的Take().

谢谢!

Luk*_*keH 4

像这样的事情怎么样?

var results = cache.GroupBy(rec => rec.Id, rec => rec)
                   .Take(n)
                   .SelectMany(rec => rec);
Run Code Online (Sandbox Code Playgroud)