04.Linq总结

  Linq语言查询,部分关键字使用:

a)    Distinct,值类型可以直接筛除,对于引用类型需要实现接口IEqualityComparer<T>。
b)    Select、SelectMany,SelectMany返回的委托是IEnumerable<T>。而Select返回委托是IEnumerable<IEnumerable<T>>。
c)    Where查询条件,进行筛选。
d)    ToDictionary、ToArray()、ToList(),转换成对应类型。
e)    First、FirstOrDefault、Last、LastOrDefault、Find、FindOrDefault。其中如果First、Last、根据查询条件没有找出来具体数据的话则会抛出异常,而对于FirstOrDefault、LastOrDefault则不会抛出异常。
f)    OrderBy、OrderByDescending、ThenOrderBy、ThenOrderByDescending。主要是做排序使用,可以多次连接进行排序,例如:OrderBy(p => p.id). OrderByDescending(p => p.name);
g)    list.GroupBy(a => new { a.Name, a.ID }).Select(p => new { p.Key.ID, p.Key.Name, count = p.Sum(a => a.ModifyBy) }) 。关于GroupBy使用可以在进行Select或者是其他操作。
h)    list.take(5),取前N条数据,如果列表当中没有指定数量的数据,那么有多少数据就取多少数据。

  对于引用类型Distinct筛选实现:

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
public class EqualityComparer < T > : IEqualityComparer < T >
where T : class
{
private string Fileds { get ; set ; }

public EqualityComparer( string fileds)
{
Fileds
= fileds;
}

public bool Equals(T x, T y)
{
return GetHashCode(x) == GetHashCode(y);
}

public int GetHashCode(T obj)
{
try
{
return Convert.ToInt32( typeof (T).GetProperty(Fileds).GetValue(obj, null ));
}
catch
{
throw new NotImplementedException();
}
}
}
对于引用类型Distinct使用:
 
  
Dictionary < int , AssessmentActivity > l1 = list.Distinct( new EqualityComparer < AssessmentActivity > ( " ID " )).ToDictionary(p => p.ID);

转载于:https://www.cnblogs.com/yangboyu/archive/2011/02/08/1949857.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值