none
select new slow how to solve? RRS feed

  • 问题

  • var dtype=from p in lisHis   select new HisInfo
                            {
     
                                所属电站 = p.所属电站,
                                设备名称 = p.设备名称,
                                设备类型 = p.设备类型,
                                IP = p.IP,
                                Port = p.Port,
                                设备编号 = p.Chip + " " + (p.FlagSD == null ? "" : p.FlagSD == "Y" ? "存储卡已插入" : ""),
     
                                供电模式 = ((int)(StationStatus)p.PowerStatus.ToInt()) == 0 ? "隔供模式" + "  " + (p.ChargeSource == "A" 
                ? "Ap交流电" : p.ChargeSource == "B" ? "太阳能供电" : p.ChargeSource == "Z" 
                ? "没有供电" : "") : ((int)(StationStatus)p.PowerStatus.ToInt()) == 2 ? "浮充模式" + "  " +
                 (p.ChargeSource == "A" ? "Ap交流电" : p.ChargeSource == "B" ? "太阳能供电" : p.ChargeSource == "Z"
                 ? "没有供电" : "") : ((int)(StationStatus)p.PowerStatus.ToInt()) == 3 ? "直供模式" + "  " + (p.ChargeSource == "A" 
                ? "Ap交流电" : p.ChargeSource == "B" ? "太阳能供电" : p.ChargeSource == "Z" ? "没有供电" : "") : 
                ((int)(StationStatus)p.PowerStatus.ToInt()) == 4 ? "充电故障" + "  " + (p.ChargeSource == "A" 
                ? "Ap交流电" : p.ChargeSource == "B" ? "太阳能供电" : p.ChargeSource == "p" 
                ? "没有供电" : "") : "" + "  " + (p.ChargeSource == "A" ? "Ap交流电" : p.ChargeSource == "B" 
                ? "太阳能供电" : p.ChargeSource == "Z" ? "没有供电" : ""),
                                //p.DevNo,
                                交流参数 = p.AC == null ? "" : p.AC + "V",
                                光能参数 = p.VoltageSolarCeel == null ? "" : p.VoltageSolarCeel + "V",
                                充电参数 = p.ChargeVoltage == null ? "" : p.ChargeVoltage + "V" + "  " + p.ChargeCurrent + "A",
                                供电参数 = p.SupplyVoltage == null ? "" : p.SupplyVoltage + "V" + "  " + p.SupplyCurrent + "A",
     
     
                                电源输出1 = p.LoadCurrent1 == null ? "" : p.LoadVoltage1 + "V" + "  " + p.LoadCurrent1 + "A",
                                电源输出2 = p.LoadCurrent2 == null ? "" : p.LoadVoltage2 + "V" + "  " + p.LoadCurrent2 + "A",
                                电源输出3 = p.LoadCurrent3 == null ? "" : p.LoadVoltage3 + "V" + "  " + p.LoadCurrent3 + "A",
                                电源输出4 = p.LoadCurrent4 == null ? "" : p.LoadVoltage4 + "V" + "  " + p.LoadCurrent4 + "A",
                                电源输出5 = p.LoadCurrent5 == null ? "" : p.LoadVoltage5 + "V" + "  " + p.LoadCurrent5 + "A",
     
                               
                                环境监控 = p.设备名称 == "IDP-S" ? "-" : p.FlagIR == null ? " " : ("红外:" + Temp(p.FlagIR) + " " + "门磁:" + Temp(p.FlagDoor) + " " + "浸水:" + Temp(p.FlagWater)),
     
     
                                电池A内阻值 = p.设备名称 == "IDP-S" ? "-" : p.InnerValue1 == null ? "" : p.InnerValue1 + "mΩ" + " " + p.InnerStatus1,
                                电池B内阻值 = p.设备名称 == "IDP-S" ? "-" : p.InnerValue2 == null ? "" : p.InnerValue2 + "mΩ" + " " + p.InnerStatus2,
                                电池C内阻值 = p.设备名称 == "IDP-S" ? "-" : p.InnerValue3 == null ? "" : p.InnerValue3 + "mΩ" + " " + p.InnerStatus3,
                                电池D内阻值 = p.设备名称 == "IDP-S" ? "-" : p.InnerValue4 == null ? "" : p.InnerValue4 + "mΩ" + " " + p.InnerStatus4,
     
     
                                供电电池 = p.设备名称 == "IDP-S" ? "-" : p.SupplyCeel == null ? "" : p.SupplyCeel == "p" ? "A组电池" : p.SupplyCeel == "D" ? "B组电池" : p.SupplyCeel == "Y" ? "没有电池" : "",
                               
                                信号质量 = p.设备名称 == "IDP-S" ? "-" : p.SignalQuality,
                                通信 = ((int)(StationStatus)p.PowerStatus.ToInt()) == 5 ? "索数未回" : ((int)(StationStatus)p.PowerStatus.ToInt()) == 6
                 ? "通信中断" : ((int)(StationStatus)p.PowerStatus.ToInt()) == 7 ? "回数异常" : ((int)(StationStatus)p.PowerStatus.ToInt()) == 8 ? "工作端口连接不成功" : "",
                                市电 = p.ChargeSource == null ? "" : int.TryParse(p.AC, out s) ? ((p.ChargeSource == "A" && Convert.ToInt32(p.AC) < 150) ? "市电停电" : "正常") : "",
                                最近更新时间 =Convert.ToDateTime(p.RecvDataTime),
                                原始数据 = p.RawData,
                                DeviceTypeId = p.DeviceTypeId,
     
                                StationId = p.StationId };
             

    这个速度非常慢,怎么解决

    please verify my account

    • 已编辑 Sri Divya 2016年12月14日 16:07
    2016年12月12日 6:22

答案

  • 数据量太大了?

    http://feiyun0112.cnblogs.com/

    • 已标记为答案 lctk 2016年12月30日 5:46
    2016年12月13日 1:14
    版主
  • 你好,

    首先如果你的结果集是从数据库里面直接查询的话,我建议你可以首先得到LINQ的生成的数据库语句。

    然后把这个语句在数据库中直接运行。

    然后打开数据库分析软件,看哪部分执行很慢,然后再针对那部分进行优化。

    如果是数据量实在太多的问题,只有分期查询了,就是不要一个性查询所有数据,按照一定的条件分区你的数据库。

    谢谢


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 lctk 2016年12月30日 5:46
    2016年12月13日 7:22

全部回复

  • 数据量太大了?

    http://feiyun0112.cnblogs.com/

    • 已标记为答案 lctk 2016年12月30日 5:46
    2016年12月13日 1:14
    版主
  • 你好,

    首先如果你的结果集是从数据库里面直接查询的话,我建议你可以首先得到LINQ的生成的数据库语句。

    然后把这个语句在数据库中直接运行。

    然后打开数据库分析软件,看哪部分执行很慢,然后再针对那部分进行优化。

    如果是数据量实在太多的问题,只有分期查询了,就是不要一个性查询所有数据,按照一定的条件分区你的数据库。

    谢谢


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 lctk 2016年12月30日 5:46
    2016年12月13日 7:22
  • 是在内存直接操作的,数据几万条

    please verify my account

    2016年12月16日 1:53
  •  SELECT 1,PowerHistory.id as id,StationName as StationName,deviceName, DeviceType.DeviceTypeName,DeviceInfo.IP,DeviceInfo.Port,chip,FlagSD,PowerStatus,AC, VoltageSolarCeel,ChargeVoltage,ChargeCurrent, SupplyVoltage,SupplyCurrent, LoadCurrent1,LoadVoltage1, LoadCurrent2,LoadVoltage2, LoadCurrent3,LoadVoltage3, LoadCurrent4,LoadVoltage4, LoadCurrent5, LoadVoltage5, EnvTemp,EnvHum,FlagIR,FlagDoor,FlagWater, InnerValue1,InnerStatus1, InnerValue2,InnerStatus2, InnerValue3,InnerStatus3, InnerValue4,InnerStatus4, SupplyCeel,DevTemp,SignalQuality,ChargeSource,Convert(varchar(50),RecvDataTime,120) as RecvDataTime, RawData,DeviceTypeId,StationId from DeviceInfo INNER JOIN PowerHistory on PowerHistory.DeviceId=DeviceInfo.ID INNER JOIN StationInfo on StationInfo.Id=DeviceInfo.StationId INNER JOIN DeviceType on DeviceInfo.DeviceTypeId=DeviceType.Id where RecvDataTime>='2016/8/1 0:00:00' and RecvDataTime<='2016/12/19 23:59:59' 


    please verify my account

    2016年12月19日 5:27
  • 分析分析啊


    please verify my account

    2016年12月19日 5:29

  • please verify my account

    2016年12月19日 5:35