我有一个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().
谢谢!
像这样的事情怎么样?
var results = cache.GroupBy(rec => rec.Id, rec => rec)
.Take(n)
.SelectMany(rec => rec);
Run Code Online (Sandbox Code Playgroud)