c# - LINQ 是提高效率的新选择

标签 c# linq

如果我从列表中选择元素的子集,我是否通过执行 select new 仅获取我将使用的属性来获得任何东西。还是编译器只是优化它,这样我就可以停止使用 select new,例如:

var q = from n in TheseGuysHaveABunchOfProperties
        where n.State == "AK" 
        select new { Name = n.Name, Phone = n.Phone };

q.ToList().ForEach(x => Debug.WriteLine(x.Name + x.Phone);

对比

var q = from n in TheseGuysHaveABunchOfProperties
        where n.State == "AK" select n;

q.ToList().ForEach(x => Debug.WriteLine(x.Name + x.Phone);

最佳答案

如果您正在执行 LINQ to Objects,则不会。当您复制和分配更多临时变量时,它更有可能变慢。对于 LINQ to SQL,情况正好相反,因为您减少了从数据库复制的数据量。

编辑:这描述了常见情况。在 LINQ to Objects 的情况下,如果对象的检索成本很高,并且在 select 语句中多次使用,则复制对象的速度可能更快。如果是 LINQ to SQL,请注意不要选择您实际不使用的属性。

关于c# - LINQ 是提高效率的新选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837857/

相关文章:

c# - 获取除英语以外其他语言的国家列表

c# - C# 根据键对字典列表进行排序

c# - 使用 linq 按具有空数据值的日期进行分组

c# - 如何等待以特定 linq 表达式作为参数的调用

C# 从存储过程中获取返回值不起作用

c# - System.Web.HttpContext.Current.User.Identity.IsAuthenticated 返回 false

C# 测试运行配置(*.runsettings)

c# - 如何更新其他类(class)的进度条?

LINQ:子查询中第一行的内连接?

c# - 如何从字符串创建 LINQ 查询?