Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此for循环C#代码转换为Linq或使处理时间更快?_C#_Linq - Fatal编程技术网

如何将此for循环C#代码转换为Linq或使处理时间更快?

如何将此for循环C#代码转换为Linq或使处理时间更快?,c#,linq,C#,Linq,List数组_Group=new List(); 数组_Group.Add(新列表()); 对象previosSelecter=null; 对于(int i=0;i

List数组_Group=new List();
数组_Group.Add(新列表());
对象previosSelecter=null;
对于(int i=0;i
由于需要处理大量数据,执行时间非常长。 如何使其执行更简单、更快?

试试以下方法:

using System.Linq;
using System.Collections.Generic;

var array_Group = after_Rounded.GroupBy(x => (x as Array_Group)?.FD_T_Act_);
这将生成一个
System.Collections.Generic.IEnumerable
,其中T是这两行四舍五入后
中的任何内容

Type Group = typeof(Array_Group);

PropertyInfo prop = Group.GetProperty("FD_T_Act_");      
你可以在循环之前移动。这是一个常量表达式,将导致始终相同的值,但这也是一个非常昂贵的耗时表达式

通过“GetProperty”访问属性也非常耗时

您可以创建一个委托来改进这一点(也是在循环之前)

是吗

 propType currentSelector = getter(current);

linq不会加快速度,但它可能会简化代码。提高性能的方法之一是尽量避免在四舍五入.ElementAt(i)
之后使用
。据我所知,它有
O(n)
。使用
列表
和按索引访问,那么它将是
O(1)
@BigB您考虑过并行处理吗?如果您可以将源数据分成更小的数据块并同时处理它们,这可能会很有用。您使用属性值
FD\u T\u Act
,这就是示例,还是您希望用作currentSelector的唯一属性?请共享一个。谢谢,如果(previosSelecter==null)@BigB您能给出源数据和预期数据的示例吗
 Func<Array_Group, propType> getter = (Func<Array_Group, propType>)
        Delegate.CreateDelegate(typeof(Func<Array_Group, propType>), null,
            prop.GetGetMethod());
 object currentSelector = prop.GetValue(current);
 propType currentSelector = getter(current);