//-------------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);
}