我正在使用 Enumerable.ToDictionary 从 linq 调用中创建一个字典:

return (from term in dataContext.Terms
        where term.Name.StartsWith(text)
        select term).ToDictionary(t => t.TermID, t => t.Name);

该调用会获取每个术语的全部内容,还是仅从我的数据提供程序中检索 TermID 和 Name 字段?换句话说,如果我改为这样写,我会节省自己的数据库流量吗:
return (from term in dataContext.Terms
        where term.Name.StartsWith(text)
        select new { term.TermID, term.Name }).ToDictionary(t => t.TermID, t => t.Name);

最佳答案

Enumerable.ToDictionary 适用于 IEnumerable 对象。语句的第一部分“(from ... select term”) 是一个 IQueryable 对象。 Queryable 将查看表达式并构建 SQL 语句。然后它会将其转换为 IEnumerable 以传递给 ToDictionary()。

换句话说,是的,您的第二个版本会更有效率。

关于linq - Enumerable.ToDictionary 是否只检索它需要的内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2078985/

10-10 16:45