我正在使用Enumerable.ToDictionary从 linq调用创建一个Dictionary: return (from term in dataContext.Terms where term.Name.StartsWith(text) select term).ToDictionary(t = t.TermID, t = t.Name); 该调用是否会获取每个术语的
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对象.语句的第一部分“(来自…选择术语”)是一个IQueryable对象. Queryable将查看表达式并构建SQL语句.然后它将它转换为IEnumerable以传递给ToDictionary().
换句话说,是的,你的第二个版本会更有效率.