.net List 相关操作

属性或方法

属性或方法用途
Count或Count()用于获取数组中当前元素数量
Item()通过指定索引获取或设置元素。对于List类来说,它是一个索引器。
Add()在List中添加一个对象的公有方法
AddRange()公有方法,在List尾部添加实现了ICollection接口的多个元素
Insert()在List内插入一个元素
InsertRange()在List内插入一组元素
Clear()在List内移除所有元素
Remove()移除与指定元素匹配的第一个元素
RemoveAt()移除指定索引的元素
RemoveRange()移除指定范围的元素
CopyTo()重载的公有方法,把一个List拷贝到一维数组内
Contains()测试一个元素是否在List内
Exists()测试一个元素是否在List内
Find()查找并返回List内的出现的第一个匹配元素
FindAll()查找并返回List内的所有匹配元素
IndexOf()重载的公有方法,查找并返回每一个匹配元素的索引
LastIndexOf()重载的公有方法,,查找并返回最后一个匹配元素的索引
GetEnumerator()重载的公有方法,返回一个用于迭代List的枚举器
Getrange()拷贝指定范围的元素到新的List内
BinarySearch()重载的公有方法,用于在排序的List内使用二分查找来定位指定元素.
Reverse()反转List内元素的顺序
Sort()对List内的元素进行排序
ToArray()把List内的元素拷贝到一个新的数组内
trimToSize()将容量设置为List中元素的实际数目

分组 去重

 var groupModel= listModel.GroupBy(m => new { m.Code, m.Name}).Distinct().Select(t => new Model
                {
                    Code= t.Key.Code,
                    Name = t.Key.Name                 
                }).ToList();

List<Model> result = list.ToLookup(item => item.name).ToDictionary(item => item.Key, item => item.First()).Values.ToList();

list = list.Where((x, i) => list.FindIndex(n => n.Id == x.Id) == i).ToList();

List<Model> result = list.GroupBy(item => item.Name).Select(item => item.First()).ToList();

List<string> result = list.Select(it => it.Name).Distinct().ToList();

筛选

   var selectList = list.Where(x=> x.Code == item.Code && x.Name== item.Name).ToList(),

赋值

 list.ForEach(x => x.Name= value);
 list.All(x => { x.Name= value;return true; });
 list.Select(x => { x.Name= value;return true; });
 list.FindAll(a => a.Id== item.Id).ForEach(a => a.Name= item.Name)

List转DataTabel


DataTable dt = ListToDataTable(list);

/// <summary>
/// 将List转换为DataTable
/// </summary>
/// <param name="list">请求数据</param>
/// <returns></returns>
public static DataTable ListToDataTable<T>(List<T> list)
{
   //创建一个名为"tableName"的空表
   DataTable dt = new DataTable("tableName");

    //创建传入对象名称的列
    foreach (var item in list.FirstOrDefault().GetType().GetProperties())
         dt.Columns.Add(item.Name);
    //循环存储
    foreach (var item in list)
    {
       //新加行
        DataRow value = dt.NewRow();
       //根据DataTable中的值,进行对应的赋值
       foreach (DataColumn dtColumn in dt.Columns)
       {
           int i = dt.Columns.IndexOf(dtColumn);
           //基元元素,直接复制,对象类型等,进行序列化
           if (value.GetType().IsPrimitive)
              value[i] = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item);
           else
               value[i] = JsonConvert.SerializeObject(item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item));
        }
        dt.Rows.Add(value);
   }
   return dt;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值