博客
关于我
List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局
阅读量:796 次
发布时间:2023-02-05

本文共 3057 字,大约阅读时间需要 10 分钟。

编程技巧实用分享

1. GroupBy 运算的实际应用

GroupBy 是 LINQ 中一个非常实用的方法,用于对集合数据进行分组操作。以下是一个实际场景的 GroupBy 使用示例:

var _roomProducts = homesingProducts.GroupBy(t => t.RoomName);RoomedProducts temp = new RoomedProducts();foreach (var item in _roomProducts){    roomNames.Add(item.Key);    temp = new RoomedProducts();    temp.RoomName = item.Key;    temp.Products = new List
(); temp.Products.AddRange(item); roomedProducts.Add(temp);}

这个代码 snippet 展示了如何根据房间名称对产品列表进行分组,并将每个分组的数据存储到 roomedProducts 列表中。


2. 枚举类与反射的结合使用

为了避免在代码中反复出现类似于 order.state == 50order.statedesc == "已付款" 的情况,可以通过枚举类配合反射来实现状态管理。以下是一个枚举类和反射方法的示例:

public enum DesignOrderState{    ///     /// 待付款    ///     [Description("待付款")]    WaitPaying = 30,    ///     /// 已付款    ///     [Description("已付款")]    Paid = 50,    ///     /// 设计中    ///     [Description("设计中")]    Designing = 70,    ///     /// 已交付    ///     [Description("已交付")]    Completed = 90,}public static Dictionary
ReflectFiledsNameByClassName(string className){ Dictionary
result = new Dictionary
(); Type t = Type.GetType(className); PropertyInfo[] properties = t.GetProperties(); string attr = ""; foreach (var item in properties) { foreach (Attribute _attr in Attribute.GetCustomAttributes(item)) { if (_attr.GetType() == typeof(DescriptionAttribute)) { attr = ((DescriptionAttribute)_attr).Description; } } result.Add(item.Name, attr); attr = ""; } return result;}public static Dictionary
ReflectEnumFiledAndValues(Type type){ Dictionary
result = new Dictionary
(); FieldInfo[] properties = type.GetFields(); foreach (var item in properties) { try { result.Add(item.Name, (int)(Enum.Parse(type, item.Name))); } catch (Exception) { // 忽略不能枚举的字段 } } return result;}public static string ReflectFiledsNameByEnumClassName(string className, string filedName){ string result = ""; Type t = Type.GetType(className); FieldInfo[] properties = t.GetFields(); int length = properties.Length; for (int i = 1; i < length; i++) { if (properties[i].Name == filedName) { DescriptionAttribute attr = Attribute.GetCustomAttribute(properties[i], typeof(DescriptionAttribute), false) as DescriptionAttribute; result = attr.Description; break; } } return result;}

这个代码 snippet 展示了如何通过反射获取枚举类的字段名及其对应的描述信息,以及如何从枚举类中获取字段值。


3. 正则表达式的实用技巧

在前端开发中,正则表达式是处理文本验证的重要工具。以下是一些常用的正则表达式示例:

var password = $("#password").val();if (!(/^[\w\d.,\?]{5,15}$/).test(password)){    alert("密码不能输入特殊字符并且长度为5到15");    return;}// 手机号码验证var mobile = $("#mobile").val();if (!(/^1[34578]\d{9}$/.test(mobile))){    alert('手机号码格式错误!');    return;}

这个代码 snippet 包含了两个常用的正则表达式:

  • ^[\w\d.,\?]{5,15}$ 用于验证密码字符,允许字母、数字、特殊字符(如逗号、问号)在 5 到 15 个字符之间。
  • ^1[34578]\d{9}$ 专门用于验证手机号码格式,确保手机号以 1、3、4、7、8 开头,后面跟着 9 位数字。

  • 4. 搜索引擎友好的下拉布局

    以下是一个简单的搜索下拉布局示例,供开发者参考:

    这个下拉框可以用于搜索页面中的内容分类,用户可以根据需要从多个类型中选择。


    以上就是本次编程技巧分享的内容,希望对你有所帮助!如果需要更多实用技巧,欢迎继续关注我的博客。

    转载地址:http://yzufk.baihongyu.com/

    你可能感兴趣的文章
    Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Nacos实战攻略:从入门到精通,全面掌握服务治理与配置管理!(上)
    查看>>
    Nacos实战攻略:从入门到精通,全面掌握服务治理与配置管理!(下)
    查看>>
    Nacos心跳机制实现快速上下线
    查看>>
    nacos报错com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNAVAILABLE: io exception
    查看>>
    nacos服务提供和发现及客户端负载均衡配置
    查看>>
    Nacos服务注册与发现demo
    查看>>
    Nacos服务注册与发现的2种实现方法!
    查看>>
    nacos服务注册和发现原理简单实现案例
    查看>>
    Nacos服务注册总流程(源码分析)
    查看>>
    nacos服务注册流程
    查看>>
    Nacos服务部署安装
    查看>>
    nacos本地可以,上服务器报错
    查看>>
    Nacos注册Dubbo(2.7.x)以及namespace配置
    查看>>
    Nacos注册中心有几种调用方式?
    查看>>
    nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
    查看>>
    nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
    查看>>
    Nacos源码分析:心跳机制、健康检查、服务发现、AP集群
    查看>>