C#基础(一)

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

函数式编程

报错

插入数据表报错,原来是插入表的触发器报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值