求大家帮忙把这段代码的排序方式改一下。。。
目前排序的时间超过3S 想改到3S一下 据说可以先把数据取出来放入一个集合中 不过在下实在不会改了。。//从数据库服务器上获取当天设备加工参数信息
for (int i = 0; i < listturn.Count; i++)
{
itmHandleClient = 1234;
KepItem = KepItems.AddItem(listturn[i].ToString(), itmHandleClient);
itmHandleServer = KepItem.ServerHandle;
}
//排序
string[] values = new string[262];
for (int i = 0; i < 262; i++)
{
string itemID = "EA211.AF999.DB" + i.ToString();
foreach (OPCItem item in KepItems)
{
if (itemID == item.ItemID)
{
if (item.Value != null)
{
values[i] = item.Value.ToString();
}
}
}
} 排序 C# .NET 循环 --------------------编程问答-------------------- 你这哪叫排序,就是个查找对应,你要想节约时间,就要对两个循环加以改进,比如KepItems先排序,这样KepItems就是有序的了,那么for循环中就不需要每次都从KepItems的开始遍历了,记录当前索引,下一次遍历从该索引处开始 --------------------编程问答-------------------- 这是排序? --------------------编程问答-------------------- for (int i = 0; i < 262; i++)
{
string itemID = "EA211.AF999.DB" + i.ToString();
foreach (OPCItem item in KepItems)
{
if (itemID == item.ItemID)
{
if (item.Value != null)
{
values[i] = item.Value.ToString();
}
break;
}
}
}
用linq的
var query = list.OrderBy(t => int.Parse(t.ItemID.Substring("EA211.AF999.DB".Length))).Select(t=>t.Value); --------------------编程问答-------------------- for (int i = 0; i < 262; i++)
{
string itemID = "EA211.AF999.DB" + i;
foreach (int j=KepItems.Length-1;j>=0;j-- )
{
OPCItem item=KepItems[j];
if (itemID == item.ItemID&&item.Value != null)
{
values[i] = item.Value.ToString();
break;
}
}
} --------------------编程问答-------------------- 在下刚入门 如果不是排序也请前辈们帮一下解决办法- - --------------------编程问答-------------------- KepItems换成Dictionary --------------------编程问答--------------------
求具体的编写方法.... --------------------编程问答--------------------
这样的话会报错....也许是我更改的不对 麻烦再看看 在下在这个领域实在是刚入门很懂不懂的地反- - --------------------编程问答--------------------
不明白。。
补充:.NET技术 , C#