gpt4 book ai didi

c# - 是否建议将泛型用于大量数据?

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:54 25 4
gpt4 key购买 nike

我要说成千上万的Customer记录,我必须在网络表单上显示它们。另外,我有一个具有10个属性的CustomerEntity。因此,当我使用DataReader获取数据并将其转换为List<CustomerEntity>时,我需要遍历两次数据。

那么在这种情况下是否建议使用泛型?如果是,那么我的应用程序性能如何?

对于

在CustomerEntity类中,我具有CustomerId和CustomerName属性。我从客户表中获得100条记录
然后对于准备列表,我编写了以下代码

while (dr.Read()) 
{
// creation of new object of customerEntity
// code for getting properties of CustomerEntity
for (var index = 0; index < MyProperties.Count; index++)
{
MyProperty.setValue(CustEntityObject,dr.GetValue(index));
}
//adding CustEntity object to List<CustomerEntity>
}


我如何避免这两个循环。他们还有其他机制吗?

最佳答案

我不太确定泛型如何与数据量联系在一起。它们是不相关的概念...我也不清楚为什么这需要您两次阅读所有内容。但是可以:泛型在批量使用时很好(为什么不这样?)。但是,当然,查找问题的最佳方法是分析(服务器性能或带宽-在这种情况下可能更多)。

当然,更好的方法是:不要在Web表单上显示数千条记录;用户将如何处理?使用分页,搜索,过滤,ajax等-可以想象到的每一个技巧-但不要将数千条记录发送给客户端。



重新更新问题;设置属性的循环不一定很糟糕。这是一个完全适当的内部循环。在执行任何操作之前,请进行概要分析以查看这是否确实存在问题。我怀疑纯粹的带宽(服务器和客户端之间,或服务器和数据库之间)是最大的问题。如果您可以证明此循环是一个问题,则可以做一些优化的事情:


切换到使用PropertyDescriptor(而不是PropertyInfo),并使用HyperDescriptor使其更快
DynamicMethod编写代码来完成这项工作-需要对IL有一定的了解,但是速度非常快
编写一个.NET 3.5 / LINQ Expression进行相同的操作并使用.Compile()-与第二点类似,但是(IMO)有点容易


我可以为第一个和第三个项目符号添加示例;我真的不想为第二个示例编写示例,只是因为我自己不会再那样写该代码了(我将在可用的情况下使用第三个选项,否则使用第一个)。

关于c# - 是否建议将泛型用于大量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com