c# 的一些基本操作或属性

List 去重

var newList = list.Where((x, i) => list.FindIndex(z => z.Name == x.Name) == i).ToList();

http下载文件,不保存到服务器,直接使用浏览器下载

/// <summary>
/// 根据url下载文件
/// </summary>
/// <param name="url">文件url</param>
/// <param name="fileName">文件名</param>
public void GetFileFromNetUrl(string url, string fileName)
{
     Stream stream = null;
     int bytesToRead = 10000;
     byte[] buffer = new Byte[bytesToRead];
     try
     {
         HttpWebRequest fileReq = (HttpWebRequest)HttpWebRequest.Create(url);
         HttpWebResponse fileResp = (HttpWebResponse)fileReq.GetResponse();
         if (fileReq.ContentLength > 0)
            fileResp.ContentLength = fileReq.ContentLength;
            stream = fileResp.GetResponseStream();
            var resp = Response;
            resp.ContentType = "application/octet-stream";
            //设置文件名
            resp.AddHeader("Content-Disposition", "attachment; filename="" + fileName + """);
            resp.AddHeader("Content-Length", fileResp.ContentLength.ToString());
            int length;
            do
            {
             if (resp.IsClientConnected)
                {
                  length = stream.Read(buffer, 0, bytesToRead);
                  resp.OutputStream.Write(buffer, 0, length);
                  resp.Flush();
                  buffer = new Byte[bytesToRead];
                }
              else
               {
                 length = -1;
               }
             } while (length > 0);
         }
    finally
    {
     if (stream != null)
     {
        stream.Close();
     }
   }
}

获取网络图片并转换为base64

 private string GetImgBase64(string imgUrl)
 {
      WebRequest request = WebRequest.Create(imgUrl);
      WebResponse response = request.GetResponse();
      Stream s = response.GetResponseStream();
      byte[] data = new byte[1024];
      int length = 0;
      MemoryStream ms = new MemoryStream();
      while ((length = s.Read(data, 0, data.Length)) > 0)
      {
          ms.Write(data, 0, length);
      }
      ms.Seek(0, SeekOrigin.Begin);
      return Convert.ToBase64String(ms.ToArray());
}

判断请求来源

public ActionResult DownloadApp()
{
     //获取客服端请求源
     string agent = Request.UserAgent;
     string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
     // CloudWave.Framework.Core.Logging.Logging4net.WriteInfo(agent);
     //排除 Windows 桌面系统           
     //if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
     var downloadurl = "";
     //判断是微信, 直接响应应用宝地址
     if (agent.ToLower().Contains("micromessenger"))
     {
         //获取配置信息
     }
     //安卓
     else if (agent.ToLower().Contains(keywords[0]))
     {
                
              
     }
     //苹果
     else if(agent.ToLower().Contains(keywords[1].ToLower())|| agent.ToLower().Contains(keywords[2].ToLower()) 
                || agent.ToLower().Contains(keywords[3].ToLower()))
     {
                
              
     }
       return Json(downloadurl);
}

 js encodeURI编码 后面解码

 var str1 = HttpUtility.UrlDecode(Keyword);
 var str2 = Server.HtmlDecode(Keyword);
 var str3 = Server.UrlDecode(Keyword);
 var str4 = Microsoft.JScript.GlobalObject.decodeURIComponent(Keyword);

 参数渲染扩展类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace System {

    /// <summary>
    /// 参数渲染扩展类
    /// </summary>
    public static class LayoutRenderer {

        /// <summary>
        /// 格式化模板参数替换参数项为对应的值的字符串表示
        /// str:模板字符串(例:"Hello {Text}")
        /// </summary>
        /// <param name="str">模板字符串(例:"Hello {Text}")</param>
        /// <param name="jsonValue">对应模板的参数值,json格式(例:"{"Text":"World"}")</param>
        /// <returns></returns>
        public static string FormatTemplate(this string str, string jsonValue) {
            var jObject = Newtonsoft.Json.JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(jsonValue); // (Newtonsoft.Json.Linq.JObject)req.Data;
            if (jObject != null) {
                string name = "", value = "";
                foreach (var item in jObject) {
                    if (item.Value is Newtonsoft.Json.Linq.JValue) {
                        name = item.Key;
                        value = System.Web.HttpUtility.UrlDecode(item.Value.ToString());
                    }
                    str = str.Replace(string.Format("{0}{1}{2}", "{", name, "}"), value);
                }
            }
            return str;
        }

        /// <summary>
        /// 格式化模板参数替换参数项为对应的值的字符串表示
        /// str:模板字符串(例:"Hello {Text}")
        /// </summary>
        /// <param name="str">模板字符串(例:"Hello {Text}")</param>
        /// <param name="objValue">对应模板的参数值对象实例</param>
        /// <returns></returns>
        public static string FormatTemplate<T>(this string str, T objValue) where T : new() {
            if (objValue != null) {
                var type = objValue.GetType();
                var properties = type.GetProperties();
                foreach (var item in properties) {
                    // item.GetValue();
                    var value = item.GetValue(objValue);
                    if (value != null)
                        str = str.Replace(string.Format("{0}{1}{2}", "{", item.Name, "}"), value.ToString());
                }
            }
            return str;
        }

        /// <summary>
        /// 将传入的字符串中间部分字符替换成特殊字符
        /// </summary>
        /// <param name="value">需要替换的字符串</param>
        /// <param name="startLen">前保留长度</param>
        /// <param name="endLen">尾保留长度</param>
        /// <param name="replaceChar">特殊字符</param>
        /// <returns>被特殊字符替换的字符串</returns>
        public static string ReplaceWithSpecialChar(string value, int startLen = 3, int endLen = 4, char specialChar = '*')
        {
            try
            {
                int lenth = value.Length - startLen - endLen;

                string replaceStr = value.Substring(startLen, lenth);

                string specialStr = string.Empty;

                for (int i = 0; i < replaceStr.Length; i++)
                {
                    specialStr += specialChar;
                }

                value = value.Replace(replaceStr, specialStr);
            }
            catch (Exception)
            {
                return value;
            }

            return value;
        }
    }
}
原文地址:https://www.cnblogs.com/miskis/p/9150746.html