如果我有一个具有许多属性的对象 A,我只需要其中的几个属性,我可以通过不传输不必要的数据来提高性能,即只选择我需要的对象属性到一个新类型 B 中,无论是命名的还是匿名的.
现在想象一下,我想将那些原始对象 A 的列表绑定(bind)到一个 datagridview,它只显示我想要的几个属性。我使用原始对象 A 的属性名称创建了 datagridview 列,并将其数据源类型设置为 typeof(A)。我想知道,如果我可以选择同一个对象 A 只是省略我不需要的属性,即
public class MyObject
{
public string prop1 { get; set; }
public string prop2 { get; set; }
.....
public string propN { get; set; }
}
var list = context.MyObject
.Select(n => new MyObject { prop1 = n.prop1, prop2 = n.prop2 }).ToList();
这样我就不需要定义一个新的类型,无论是命名的还是匿名的。问题是,我是否在性能上获得了一些东西,或者我仍然有原始大对象 A 信息的开销,尽管我没有为它的所有属性传输数据。
亚历克斯
实际上,我认为性能不会提高多少,因为 Select 语句将遍历您的所有列表并为您创建一个新的对象列表。但是如果你有你不使用的引用属性。您可以在那里保存。
如果向 UI 显示数据时没有复杂的逻辑。为什么不保持模型原样。
我是一名优秀的程序员,十分优秀!