语言集成查询 (LINQ) Language-Integrated Query

基本规则:

LINQ 数据源是支持泛型 IEnumerable 接口或从中继承的接口的任意对象。

数据源处理为可查询类型

1.XML文件转可查询类型(XElement 类型)

// using System.Xml.Linq;
XElement contacts = XElement.Load(@"c:\myContactList.xml");

2.DataTable转可查询类型

dataTable.AsEnumerable()

应用

.SelectMany/.GroupBy(.Key .Count)/.Where/.Select/.OrderBy/.ToList

DataTable:计数出现的值及数量

 List<BIN> list = dataTable.AsEnumerable()
                 .SelectMany(row => row.ItemArray.Select(col => col.ToString()))
                 .GroupBy(item => item)
                 .Where(item => item.Key != empty)
                 .Select(item => new Bin { BIN_ID = item.Key.ToString(), QTY = item.Count().ToString() })
                 .OrderBy(item => item.BIN_ID)
                 .ToList();


1 DataTable .SelectMany 先取DataRow 说明:这里用SelectMany是因为要用row中每列的值(多个值),如果是只取row中的一个值 eg. row列为Name的值 则使用Select。
2 说明:DataRow 类的 ItemArray 属性。该属性返回一个 object[] 数组,其中包含了该 DataRow 所有列的值
object[] .Select 获取列值 =>作为SelectMany的结果
3 .GroupBy 根据item值分组 说明:这里的作用是为了分出来item.Key和item.Count()
4 .Where 筛选条件 item.Key不为empty 
5 .Select 将每一个item 转成对象BIN
5 .OrderBy 根据item.BIN_ID 排序(这里已经是对象了) 
6 .ToList() 收集成list

.GroupBy/.Select/.First()/.ToList

获取List的其中一个属性 并对该属性去重

List< CUST_NO > list = list2.GroupBy(x => x.NO)
.Select(g => g.First())
.ToList();
List<string> editTypeList =list2.Select(x => x.NO).ToList();

//List< CUST_NO > list2
1 .GroupBy(x => x.NO)根据PSNO 将list元素每个 CUST_NO 对象分组
2 .Select(g => g.First()) 只获取每个分组里第一个对象
3 .收集为list 

.Count

计算字符串中字符char出现的次数

int count = input.Count(c => c == ',');

//string input
//当满足字符条件时计数

.OrderByDescending/.First() &.FirstOrDefault()

对list的某一属性进行倒序排序,并取第一个值

list.OrderByDescending(item => item.Timestamp).FirstOrDefault();


FirstOrDefault vs First

行为:返回序列中的第一个元素

    异常处理:
        .First() 对空序列使用会抛出异常。
        .FirstOrDefault() 对空序列使用返回默认值。(引用类型默认值为null)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值