zoukankan      html  css  js  c++  java
  • LinqToEntity的一些记事

    在需要根据字符串来确定列名,而进行排序的时候,有几种方法:

    1.用反射,优点是安全性高,可用性较强 缺点是性能比较慢 多级的时候比较麻烦

    代码
            private static object GetValue<T>(T model, string field)
            {
                
    if (field.Split('.').Length == 1)
                    
    return model.GetType().GetProperty(field).GetValue(model, null);

                
    int index = field.IndexOf('.');
                
    string f1 = field.Substring(0, index);
                
    string f2 = field.Substring(index + 1);
                
    object obj = model.GetType().GetProperty(f1).GetValue(model, null);
                
    return GetValue(obj, f2);
            } 
    var aa 
    = result.ToList().OrderBy(x => GetValue(x, "XX")).ToList();

    这个方法比较烦的是不能在query后面直接跟oderby一定要在list后面 这就导致大量数据要先读取出来再进行排序 很影响效率

    2.用query的orderby

     var aa = result.OrderBy("it.XX.YY.OO").ToList(); 

      可以定义一个字典 然后根据传入的需要排序的字段的字符串进行转换成it.XX.YY.OO 这样无论几层都可以轻松搞定 缺点是可能性不强 可能有隐患

    倒序的话 可以直接 在it.XX.YY.OO 后面加" desc"就可以了

    3.比较麻烦的反射 还在研究中= =

     还有一个记事是ajax调用controller里的接口是不是参数一定要是id = =比较烦

  • 相关阅读:
    线性判别分析(Linear Discriminant Analysis, LDA)算法分析
    OpenCV学习(37) 人脸识别(2)
    OpenCV学习(36) 人脸识别(1)
    OpenCV学习(35) OpenCV中的PCA算法
    PCA的数学原理
    OpenCV学习(34) 点到轮廓的距离
    OpenCV学习(33) 轮廓的特征矩Moment
    OpenCV学习(32) 求轮廓的包围盒
    http://www.cnblogs.com/snake-hand/p/3206655.html
    C++11 lambda 表达式解析
  • 原文地址:https://www.cnblogs.com/real/p/1798768.html
Copyright © 2011-2022 走看看