为什么。包含缓慢?通过主键获取多个实体的最有效方法?

通过主键选择多个实体的最有效方法是什么?


public IEnumerable<Models.Image> GetImagesById(IEnumerable<int> ids)

{


    //return ids.Select(id => Images.Find(id));       //is this cool?

    return Images.Where( im => ids.Contains(im.Id));  //is this better, worse or the same?

    //is there a (better) third way?


}

我意识到我可以进行一些性能测试以进行比较,但是我想知道实际上是否有比这两种方法更好的方法,并且我想对这两个查询(如果有)之间的区别(如果有)有所启发“翻译”。


POPMUISE
浏览 377回答 3
3回答

临摹微笑

第二种选择肯定比第一种更好。第一个选项将导致ids.Length对数据库的查询,而第二个选项可以'IN'在SQL查询中使用运算符。基本上,它将把您的LINQ查询变成类似以下SQL的内容:SELECT *FROM ImagesTableWHERE id IN (value1,value2,...)其中value1,value2等是您的id变量的值。但是请注意,我认为以这种方式可以序列化到查询中的值的数量可能存在上限。我看看是否可以找到一些文档...
打开App,查看更多内容
随时随地看视频慕课网APP