NetCore开发编程,基础实现

//-------------net 赋值处理
string json = JsonConvert.SerializeObject(list); //实体转为json
string json = JsonConvert.SerializeObject(model);//实体转为json
Task<Type> = JsonConvert.DeserializeObject<Type>(json);//json转为实体

string strArray = string.Join(",", _iType.GetTypeIds(id));
double[] arrData = new double[listData.Length];
arrData[ii] = value;
int[] arrInt = new int[] { 0 };
IEnumerable<int> ids = arrInt;
int[] ids = idsArray.SplitToInt32();

//
var iSum = list.Where(aa => arrIds.Contains(aa.Id)).Sum(aa => aa.Value);
var list = listData.Where(db => arrIds.Contains(db.Id)).ToList();//用于linq条件Contains
//
List<double> data = list.OrderBy(aa=>aa.Id).Select(aa => aa.Amount).ToList();//data.Reverse();//反序排列
List<JsonEtpData> list = listData.Select(gp => new CommonItem.JsonEtpData { id = gp.Id, name = gp.Name }).ToList();
//枚举
Type enumItem = (Type)Enum.Parse(typeof(Type), typeId.ToString());//字符串转为枚举类型
model.Type = enumItem;
//Skip
var timeData = listData.Skip(ii);//*sql语句中是按Hour正序排列,跳过序列中指定数量cout元素(跳过后之前就没有了),将剩下的序列返回来,然后获取第一项的值。
//
@if (Model?.Any()==true) 有数据
@if (Model?.Any() != true) 无数据
#if DEBUG //测试时候用的
#endif
int userId = _iHttpContextAccessor.HttpContext.User.GetUserId();
//请求api接口数据
var data = await _imClient.GetAsync<Apis.TypeResult>("typedata",a => a.Data("typeid", typeid).Data("status", status));
//
string[] arrValues = list.Select(a =>
{
        string result = "";
        string value = CommonMethod.GetValue(a.Value);
        if (value != "")
            result = value;
        else
            result = "0";
        return result;
 }).ToArray();//数组值


//-------------net core 查询db[列表-linq]
public IEnumerable<Type> LoadTypes(IEnumerable<int> arrIds)
{
    var list = _type.AsQueryable().Where(aa => aa.TypeId.Included(arrIds)).AsEnumerable();//用于SQL语句Included
    return list;
}
public IEnumerable<Type> LoadTypes(IEnumerable<int> arrIds)
{
    IEnumerable<int> arrUserIds = _user.AsQueryable().Select<User>(r => r.Id).AsEnumerable(reader => reader.GetInt32(0));
    var list = listType.Where(aa => arrUserIds.Contains(aa.Id)).ToList();               //用于linq条件Contains
    return list;
}
public IEnumerable<Type> LoadTypes(string time)
{
    createTime = Convert.ToDateTime(createTime).ToString("yyyy-MM-dd HH:mm:ss");
    //
    MozNetcore.Data.IQueryable<Type> list = _type.AsQueryable();
    list.Where($"Time>='{time}' and Time<='{time}'");//转换时间效率低convert(varchar,a.Time,120)='{time}'
    return list.AsEnumerable();
}
public IEnumerable<Type> LoadTypes(int year, IEnumerable<int> areaIds)
{
    MozNetcore.Data.IQueryable<Type> db = _type.AsQueryable();
    db.Where(aa => aa.Name != null);
    db.Where(aa => aa.AreaId.Included(areaIds));//linq的条件in(1,2),生成sql语句
    db.Where($"Id NOT IN(select Id from db_User where Status<>2")");
    db.Select(aa => new { aa.Id, aa.Name });
    return db.AsEnumerable();
}

//-------------net core 查询db[列表-linq缓存]
public async Task<IEnumerable<Type>> LoadMapAsync()
{
    return await _cache.GetOrCreateAsync(typeof(Type), async data =>
    {
        data.SetAbsoluteExpiration(TimeSpan.FromMinutes(3));//缓存的分钟
        var list = await _type.LoadAsync();
        return list;
    });
}


//-------------net core 查询db[列表-SQL]
public List<Type> GetList(int type)
{
    List<Type> list = new List<Type>();
    string sql = $@"select Id,Name from dt_Type where Type=@type";
    using (DbDataReader sdr = _type.ExecuteReader(sql, new { Type = type })))
    {
        while (sdr.Read())//循环每一行
        {
            #region
            Type model = new Type();
            model.Id = Convert.ToInt32(sdr["Id"].ToString());
            model.Name = sdr["Name"].ToString();
            list.Add(model);
            #endregion
        }
    }
    return list;
}

//-------------net core 查询db[列表-SQL缓存] 
public List<Type> LoadType(int type)
{
    List<Type> list = new List<Type>();
    string key = "Type";
    return _cache.GetOrCreate(key, data =>
    {
        data.SetAbsoluteExpiration(TimeSpan.FromMinutes(3));//缓存的分钟
        string sql = $@"select Id,Name from dt_Type where Type=@type";
        //
        using (DbDataReader sdr = _type.ExecuteReader(sql, new { Type = type })))
        {
            while (sdr.Read())//循环每一行
            {
                Type model = new Type();
                model.Id = Convert.ToInt32(sdr["Id"].ToString());
                model.Name = sdr["Name"].ToString();
                list.Add(model);
            }
        }
        return list;
    });
}
//-------------net core 查询db[分页-SQL]
/// <summary>
/// 查询分页数据(SQL)
/// </summary>
/// <param name="name">名称</param>
/// <param name="type">分类</param>
/// <param name="pageThis">当前第几页</param>
/// <param name="pageSize">每页显示几条</param>
/// <returns></returns>
public List<Type> LoadQuery(int typeid, string name,int pageThis, int pageSize)
{
    List<Type> list = new List<Type>();
    //
    int startIndex = pageSize * (pageThis - 1) + 1;//20*(2-1)+1=21
    int endIndex = pageSize * pageThis;            //20*2=40
    string sqlWhere = "";
    //
    if (!string.IsNullOrEmpty(name))
    {
        sqlWhere += " and m.name like'%" + name + "%'";//要防注入
    }
    //
    using (DbDataReader sdr = _type.ExecuteReader("UP_TypeData", new { typeid = typeid, sqlWhere = sqlWhere, numStart = startIndex, numEnd = endIndex }, CommandType.StoredProcedure))
    {
        while (sdr.Read())//循环每一行
        {
            Type model = new Type();
            model.Id = Convert.ToInt32(sdr["Id"]);
            model.Name = sdr["Name"].ToString();
            list.Add(model);
        }
    }
    return list;
}

//-------------net core 查询db[实体]
/// <summary>
/// 查询实体
/// </summary>
public Type GetType(int id)
{
    Type model = new Type();
    string sql = $@"select Id,Name from dt_Type where Id=@Id";
    //
    using (DbDataReader sdr = _type.ExecuteReader(sql, new { Id = id })))
    {
        if (sdr.Read())//读取一行
        {
            model.Id = Convert.ToInt32(sdr["Id"]);
            model.Name = Convert.ToInt32(sdr["Name"]);
            return model;
        }
    }
    return null;
}
//-------------net core 查询db[字符]
public string GetName(int id)
{
    Dictionary<int,string> diyName = _cache.GetOrCreate("typenames", data =>
    {
        data.SetAbsoluteExpiration(TimeSpan.FromMinutes(3));
        //
        var arrData = _dbData.AsQueryable().Select(x => new { x.Id, x.Name }).AsEnumerable(reader => new { Id = reader.GetInt32(0), Name = reader.GetString(1) });
        return arrData.ToDictionary(x => x.Id, x => x.Name);
    });
    diyName.TryGetValue(id, out var name);
    return name;
}
public int GetValue(int begin,int end)
{
    var value = 0;
    string sql = $@"SELECT sum(Value) from db_Type where Id>=@Begin and Id<@End";
    value = await Database.ExecuteScalarAsync(sql,new { Begin = begin, End = end });
    return value;
}
public string GetName(int id)
{
    string sql = $@"select top 1 convert(varchar,a.HistTime,120) from db_Type where Id={id}";
    var obj = Database.ExecuteScalar(sql);
    return Convert.ToString(obj);
}

//-------------net core 操作db[更新-linq]

//object如下:
object model = new { model.Name, model.Email,  model.Phone, model.Date };

/// <summary>
/// 更新特定列。
/// </summary>
public DataResult Update(int id, object model)
{
    var result = _dbData.Update(x => x.Id == id, model);
    return DataResult.FromResult(result, DataAction.Updated);
}
/// <summary>
/// 更新特定列。
/// </summary>
public async Task<DataResult> UpdateAsync(int id, object model)
{
    var result = await _dbData.UpdateAsync(x => x.Id == id, model);
    return DataResult.FromResult(result, DataAction.Updated);
}
/// <summary>
/// 更新特定列。
/// </summary>
public async Task<DataResult> UpdateAsync(Type model)
{
    bool result = true;
    result = await _dbData.UpdateAsync(a => a.Id == model.Id, new { model.Name, model.Memo });
    if (result){}
    return DataResult.FromResult(result, DataAction.Updated);
}
/// <summary>
/// 更新特定列。
/// </summary>
public DataResult Update(int id, object model)
{
    if (_dbData.Update(x => x.Id == id, model))
    {
        _cache.Remove(CacheKey);    //清除缓存
        _cache.Remove(typeof(Type));//清除缓存
        return DataAction.Updated;
    }
    return DataAction.UpdatedFailured;
}
//-------------net core 操作db[保存-linq]
/// <summary>
/// 添加验证更新。
/// </summary>
public DataResult Save(Type model)
{
    bool result;
    if (await _dbData.AnyAsync(x => x.Id == model.Id && x.UserId == model.UserId))
        result = await _dbData.UpdateAsync(x => x.Id == model.Id && x.UserId == model.UserId, new { model.Type, model.Value });
    else
        result = await _dbData.CreateAsync(source);
    return DataResult.FromResult(result, DataAction.Updated);
}


//-------------net core 操作db[增改-linq事务]
/// <summary>
/// 事务[删除,添加]
/// </summary>
public async Task<bool> GetDeleteMessageSend(int id)
{
    return await _dbData.BeginTransactionAsync(async db =>
    {
        bool result = false;
        //删除数据
        bool bDelES = await db.As<Type>().DeleteAsync(aa => aa.Id == id);//**删除事务
        if (bDelES == true)
        {
            Message add = new Message();
            add.CreateTime = DateTime.Now;
            result = await db.As<Message>().CreateAsync(add);
        }
        //
        if (result)
            return true;
        return false;
    });
}

//-------------net 组装
private string GetUrlDiy(string key, string value) //rTypeId,5
{
    //
    Dictionary<string, string> listDiy = new Dictionary<string, string>();
    var queryPar = Request.Query;      //rGroupId|1,rTypeId|1,page|3
    foreach (var item in queryPar)
    {
        listDiy[item.Key] = item.Value;//rGroupId|1,rTypeId|1,page|3
    }
    listDiy[key] = value;              //rGroupId|1,rTypeId|5,page|3
    IEnumerable<string> arrPar = listDiy.Select(x => $"{x.Key}={x.Value}");//rGroupId=1,rTypeId=5,page=3
    string urlPar = string.Join("&", arrPar);                              //?rGroupId=1&rTypeId=5&page=3
    return urlPar;
}

//-------------net 数组
/// <summary>
/// 处理去重数组的值
/// </summary>
public string[] GetArrDistinct(string[] arrValue)
{
    ArrayList al = new ArrayList();
    for (int i = 0; i < arrValue.Length; i++)
    {
        //判断是否已经存在
        if (al.Contains(arrValue[i]) == false)
            al.Add(arrValue[i]);
    }
    //将arrayList转换成数组
    arrValue = new String[al.Count];
    arrValue = (string[])al.ToArray(typeof(string));
    return arrValue;
}
/// <summary>
/// 处理去重数组的值
/// </summary>
public int[] GetArrDistinctInt(int[] arrValue)
{
    ArrayList al = new ArrayList();
    for (int i = 0; i < arrValue.Length; i++)
    {
        //判断是否已经存在
        if (al.Contains(arrValue[i]) == false)
            al.Add(arrValue[i]);
    }
    //将arrayList转换成数组
    arrValue = new int[al.Count];
    arrValue = (int[])al.ToArray(typeof(int));
    return arrValue;
}



//未到时间只刷新
DateTime dateTimeLast;
DateTime dateTimeStart;
public async Task<bool> GetDataSave(int id, List<Data> list)
{
    int mis = 600;//10分钟(600秒)
    foreach (Data model in list)
    {
        //---1   //未到时间只刷新    //Time=c1.20171120145055<20171120145301,c2.20171120145302>20171120145301
        if (dateTimeLast != null && model.Time < dateTimeLast.AddSeconds(mis))
        {
            var result = false;
            if (model.Id > 0)
                result = await db.UpdateAsync(x => x.Id == model.Id, new { model.Value, model.Time });
            continue;
        }
        //---2  //10分钟(600秒)后执行 //a1.20171120145001,a2.20171120145302
        dateTimeStart = model.Time;
        await db.ExecuteNonQueryAsync("proc_Data", new { model.Id, model.Value, model.Time}, System.Data.CommandType.StoredProcedure);
    }
    //
    if (dateTimeLast == null || dateTimeLast != dateTimeStart)
    {
        dateTimeLast = dateTimeStart; //b1.20171120145001,a2.20171120145302
    }
    return true;
}

/// <summary>
/// 队列 先进先出集合
/// </summary>
private readonly Queue<ValueTime> _queueTime = new Queue<ValueTime>();
public class ValueTime
{
    public double Value { get; set; }
    public string Time { get; set; }
}
/// <summary>
/// 队列 数据列表
/// </summary>
public void GetQueueCache(List<Data> list)
{
    double value = list.Sum(x => x.Value);
    string date = list.FirstOrDefault().Time.ToString("HH:mm:ss");
    //
    Random random1 = new Random();
    int rkey1 = random1.Next(0, 5);
    Random random2 = new Random();
    int rkey2 = random2.Next(0, 9);
    value = value +  Convert.ToDouble("0.0" + rkey1) + Convert.ToDouble("0.00" + rkey2);
    //加到队列add
    _queueTime.Enqueue(new ValueTime { Time = date, Value = value });
    //达到数量移除开始第一个
    if (_queueTime.Count > 1000)
        _queueTime.Dequeue();
}
/// <summary>
/// 队列 时间倒序列表
/// </summary>
public List<ValueTime> GetQueueList()
{
    return _queueTime.OrderByDescending(aa => aa.Time).ToList();
}

//-------------net 其它
protected IActionResult GetFileDownLoad(string filePath, string fileNameEn, string fileNameCn, string fileExtend)
{
    string downPath = Path.Combine(filePath + "\\", fileNameEn);
    Response.Headers.Add("Content-Disposition", "attachment;filename=" + fileNameEn);
    FileStream fileStream = new FileStream(downPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 65536, FileOptions.Asynchronous | FileOptions.SequentialScan);
    return File(fileStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileNameCn + fileExtend);
}
protected IActionResult GetFileDownLoad(string filePath, string fileNameEn, string fileNameCn, string fileExtend)
{
    string downPath = Path.Combine(filePath + "\\", fileNameEn);
    Response.Headers.Add("Content-Disposition", "attachment;filename=" + fileNameEn);
    FileStream fileStream = new FileStream(downPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 65536, FileOptions.Asynchronous | FileOptions.SequentialScan);
    return File(fileStream, "application/pdf", fileNameCn + fileExtend);
}

 

posted @ 2018-03-17 13:26  回到梦想  阅读(649)  评论(0编辑  收藏  举报