知识备忘
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识备忘相关的知识,希望对你有一定的参考价值。
1.List 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<TempProductInfo>(); temp.Products.AddRange(item); roomedProducts.Add(temp); }
2.枚举类配合反射使用(避免到处出现 order.state == 50 order.statedesc =="已付款" 等等带有常量的代码)
public enum DesignOrderState { /// <summary> /// 待付款 /// </summary> [Description("待付款")] WaitPaying = 30, /// <summary> /// 已付款 /// </summary> [Description("已付款")] Paid = 50, /// <summary> /// 设计中 /// </summary> [Description("设计中")] Designing = 70, /// <summary> /// 已交付 /// </summary> [Description("已交付")] Completed = 90, } /// <summary> /// 根据类名获取所有public属性名和特性Description /// </summary> /// <param name="className">类名</param> /// <returns>Dictionary<属性名,Description></returns> public static Dictionary<string, string> ReflectFiledsNameByClassName(string className) { Dictionary<string, string> result = new Dictionary<string, string>(); 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; } /// <summary> /// 获取枚举类的字段名及值 /// </summary> /// <param name="type"> typeof(枚举类) </param> /// <returns></returns> public static Dictionary<string, int> ReflectEnumFiledAndValues(Type type) { Dictionary<string, int> result = new Dictionary<string, int>(); FieldInfo[] properties = type.GetFields(); foreach (var item in properties) { try { result.Add(item.Name, (int)(Enum.Parse(type, item.Name)));// 得到的第一个属性是 value_ 暂时还不知道为什么 } catch (Exception) { } } return result; } /// <summary> /// 根据枚举类的字段名获取特性Description中的中文描述信息 /// </summary> /// <param name="className">枚举类名 示:SoftOrderState</param> /// <param name="filedName">枚举类字段名 示:(SoftOrderState)30 </param> /// <returns></returns> 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; } Dictionary<string, string> fileds = new Dictionary<string, string>(); Dictionary<string, int> filedValues = new Dictionary<string, int>(); ReflectFiledsNameByEnumClassName(className, SoftOrderState.Sending.ToString())); //属性 找 Description ReflectFiledsNameByEnumClassName(className,((SoftOrderState)30).ToString())); // 值 找 Description (int)((Enum.Parse(typeof(SoftOrderState), "Sending")))); // 属性 to 值 fileds = ReflectFiledsNameByClassName(className); //类名 找 属性名及对应的Description filedValues = ReflectEnumFiledAndValues(typeof(SoftOrderState));// 返回 所有字段和值的键值对
public enum EnumWorkTypes { 家居住宅, 酒店, 别墅住宅, 办公室, 酒吧KTV } var types = ""; var typs = typeof(EnumWorkTypes).GetFields(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public); foreach (var fi in typs) types += "<li value=" + fi.Name + ">" + fi.Name + "</li>"; Response.Write(types);
3.正则备忘
var password = $("#password").val(); if (!(/^[\\w\\d.,\\?]{5,15}$/).test(password)) { alert("密码不能输入特殊字符并且长度为5到15"); return; } // 正则用 ^ 跟 $ 包起来表示匹配本身 (要限制长度必须包起来) ,如果不包就表示字符串中匹配到5-15长度的一段字符,条件就为真
// 手机号码 var mobile = $("#mobile").val(); if (!(/^1[34578]\\d{9}$/.test(mobile))) { alert(‘手机号码格式错误!‘); return ; }
// 生成随机字符串 function generateAccountAndPwd() { var x = 1000000; var y = 1; // var rand1 = String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0)) + String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0)) + parseInt(Math.random() * (x - y + 1) + y) + String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0)) + parseInt(Math.random() * (x - y + 1) + y) + String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0)); var rand2 = String.fromCharCode(Math.floor(Math.random() * 26) + "a".charCodeAt(0)) + parseInt(Math.random() * (x - y + 1) + y) + String.fromCharCode(Math.floor(Math.random() * 26) + "a".charCodeAt(0)); $("#password").val(rand2); };
4.搜索配下拉布局
以上是关于知识备忘的主要内容,如果未能解决你的问题,请参考以下文章