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 = =比较烦

  • 相关阅读:
    爬虫之初试
    [已解决]疑问:关于postgres的to_number()
    随笔
    简单的任意列数均匀布局
    去除VS2010中中文注释下的红色波浪线
    DataTable举例
    DevExpress::XtraBars::BarEditItem获取EditValue值事件
    List<String^>^ 引用空间
    TreeList的VisibleNodesCount,Noes.Count,AllNdoesCount以及焦点节点的删除
    获取工程的exe文件的所在目录
  • 原文地址:https://www.cnblogs.com/real/p/1798768.html
Copyright © 2011-2022 走看看