list<model>转成xml
private string Serialier<T>(T model)
{
using (StringWriter streamWriter = new StringWriter())
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
XmlSerializer xmlSerializer = new XmlSerializer(model.GetType());
xmlSerializer.Serialize(streamWriter, model,ns);
return streamWriter.ToString();
}
}
一个model生成insert语句
private static string GetInsSql<T>()
{
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
string part1 = string.Join(",", propertys.Select(x => x.Name));
string part2 = string.Join(",", propertys.Select(x => string.Format(":{0}", x.Name)));
return string.Format("insert into {0}({1})values({2})", _t.GetType().Name, part1, part2);
}
webapi 添加Jwt认证
https://www.freesion.com/article/8512513493/
datatable转成list<Model>
public static IList<T> DataTableToIList<T>(DataTable table)
{
List<T> aa = new List<T>();
IList<T> result = new List<T>();
for (int j = 0; j < table.Rows.Count; j++)
{
T _t = (T)Activator.CreateInstance(typeof(T));
PropertyInfo[] propertys = _t.GetType().GetProperties();
for (int i = 0; i < propertys.Count(); i++)
{
if (!table.Columns.Contains(propertys[i].Name)) continue;
if (string.IsNullOrEmpty(table.Rows[j][propertys[i].Name].ToString())) continue;
switch (propertys[i].PropertyType.Name)
{
case "Int32":
propertys[i].SetValue(_t, Int32.Parse(table.Rows[j][propertys[i].Name].ToString()), null);
break;
case "Int64":
propertys[i].SetValue(_t, Int64.Parse(table.Rows[j][propertys[i].Name].ToString()), null);
break;
case "Decimal":
propertys[i].SetValue(_t, Decimal.Parse(table.Rows[j][propertys[i].Name].ToString()), null);
break;
case "Double":
propertys[i].SetValue(_t, Double.Parse(table.Rows[j][propertys[i].Name].ToString()), null);
break;
case "DateTime":
propertys[i].SetValue(_t, DateTime.Parse(table.Rows[j][propertys[i].Name].ToString()), null);
break;
default:
propertys[i].SetValue(_t, table.Rows[j][propertys[i].Name].ToString(), null);
break;
}
}
result.Add(_t);
}
return result;
}
判断两个list相等
(listxianjin.All(listCol.Contains) && listxianjin.Count == listCol.Count)
(listxianjin.Count == listCol.Count && listxianjin.Except(listCol).Count() == 0)
判断大集合包含小集合
new List<string>() { "Koo", "Kos", "Kon", "Kso", "Kss", "Ksn", "Kno", "Kns", "Knn" }.All(x=>knodes.Any(y=>y.mykey.Equals(x)))
list查询
var list1 = list.GetType().GetProperties().Select(x => new { mykey = x.Name, myvalue = x.GetValue(list)?.ToString() }).ToList();
List<string> temp = new List<string>() { "Koo", "Kos", "Kon", "Kso", "Kss", "Ksn", "Kno", "Kns", "Knn", "LKo3", "LKso2", "LKno2", "LBo3", "LBso2", "LBno2" };
var list2= list1.Where(x => temp.Contains(x.mykey)).ToList();
list平分
每份个数100,
Dictionary<int, List<Zwinsoft.Entity.T_Air_RawData>> dic = new Dictionary<int, List<Zwinsoft.Entity.T_Air_RawData>>();
int time = list.Count % 100 == 0 ? list.Count / 100 : list.Count / 100 + 1;
for (int i = 0; i < time; i++)
{
var t = list.Take(100).ToList();
dic.Add(i, t);
//list.RemoveAll(y => t.Contains(y));//这种方式也可以,但是我感觉它不好
list.RemoveRange(0,list.Count < 100 ?list.Count:100);
}
一共分成6份,平分给6个线程
int part = 6;//份数
Dictionary<int, List<Zwinsoft.Entity.T_Air_RawData>> dic = new Dictionary<int, List<Zwinsoft.Entity.T_Air_RawData>>();
int num = list.Count% part == 0? list.Count / part : list.Count / part + 1; //每份的个数
for (int i = 0; i < part; i++)
{
var t = list.Take(num).ToList();
dic.Add(i, t);
//list.RemoveAll(y => t.Contains(y));
list.RemoveRange(0, list.Count < num ? list.Count : num);
}
int count = 0;
int threadNum = 0;
Zwinsoft.DataAccess.T_Air_RawData temp= Zwinsoft.DataAccess.T_Air_RawData.GetInstance();
dic.ToList().ForEach(i => {
count += i.Value.Count;
Task.Factory.StartNew(() => {
Console.WriteLine("线程"+i.Key+"start");
temp.Update(i.Value.ToArray());
Console.WriteLine("线程" + i.Key + "success");
Interlocked.Increment(ref threadNum);
threadnum += 1;
if (threadNum == part)
Console.WriteLine(part + "个线程都完成");
});
});
Console.WriteLine(count);
dataset 判空
if (getBpBc.Tables.Count!=0)
string.join()
string.Format("create table {0} ({1})", ConfigurationManager.AppSettings["xianjinliuTable"],string.Join(", ", listCol.Select(x => x.key + " " + x.value).ToArray()));
添加webservice
https://www.cnblogs.com/Brambling/p/6815565.html
函数式编程
报错
插入数据表报错,原来是插入表的触发器报错