Linq处理List数据

这篇博客探讨了C#中数据处理的各种实用技巧,包括使用LINQ进行筛选、分页、去重和左连接操作。示例展示了如何根据特定条件过滤列表,如按省份筛选、使用IN操作符等。还讲解了如何实现分页查询和去重,并通过左连接实现数据的联合查询。此外,文中也提到了如何高效地处理字符串数组并进行去重。
摘要由CSDN通过智能技术生成

list数据添加条件

//将provice=吉林的筛选出来。
list = list.Where(x => x.provice == "吉林").ToList();

//将包含1,5条件的数据筛选出来,相当于sql里的in用法:select * from 表 where user_type in (1,5)
list= list.Where(a => "1,5".Contains(a.user_type)).ToList();

//此处等同于上面
list= list.Where(a => a.user_type == "1" || a.user_type == "5").ToList();

//另一种形式,from开头
IList<Model> query = (from item in list
                      where ("," + projectmodel.ids + ",").Contains("," + item.id + ",")
                      select item).ToList<Model>();

取出list数组,并对数组分割

string[] id = list.Where(a => !string.IsNullOrEmpty(a.user_type)).Select(a => a.id).ToArray();
//ids="1,2,3,4,5,6,7";
string ids = string.Join(",", id);

左连接和右连接 

/dt,dt1,dt2都为DataTable类型。
//左联比内联,需要多写into,需要多写from gc1 in corr.DefaultIfEmpty(),需要多写corr=gc1。
//当on为单条件时。
var results = from student in dt.AsEnumerable()
              join user in dt1.AsEnumerable() on student.Field<int>("student_id") equals user.Field<int>("id")//内联
              join corr in dt2.AsEnumerable() on student.Field<int>("id") equals corr.Field<int?>("studentproject_id") into corr//左联
              from gc1 in corr.DefaultIfEmpty()
              select new
              {
                  student,
                  user,
                  corr = gc1
              };

//当on为多条件时,借助于匿名类型:其实和解决按多条件分组的思路是一样的。
var results = from student in dt.AsEnumerable()
              join zrs in result_zrs on new { districtcounty = student.Field<string>("districtcounty"), school = student.Field<string>("school") }
              equals new { districtcounty = zrs.districtcounty, school = zrs.school } into zrs
              from gc1 in zrs.DefaultIfEmpty()
              select new
              {
                  student,
                  corr = gc1
              };

//取值方式
foreach (var i in results.ToList())
{        
    name = i.user.Field<string>("name");
}

list分页 

//Skip是起始数据,表示从第n+1条数据开始.(此处pageNum应从0开始)
//pageNum:页数、=0是第一页,pageSize:一页多少条
list = list.Skip(pageNum * pageSize).Take(pageSize).ToList();
//取前1-10条
list = list.Skip(0).Take(10).ToList();
//也可以这么写取前1-10条
list = list.Take(10).ToList();
//取第11-20条
list = list.Skip(10).Take(10).ToList();

Distinct去重        

//字符串数组
string[] idlist =  new string[ ]{"aaa","bbb","aaa"};
//去除重复aaa
idlist = idlist.Distinct().ToArray();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值