一,select简单使用
select作用:select在一个集合序列按照给定的条件进行投影,select可以返回组合的筛选结果,返回匿名类型,对返回结果进行操作,返回组合的子查询结果等等。
select方法的原型如下:
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
对于select方法的示例:
//select //1,返回数据源类型的属性 // from s in T_StuInfo where s.StuNum=="1" // select s.StuName //2,返回数据源类型筛选后的结果 // from s in T_StuInfo where s.StuNum=="1" // select s //3,新类型 // from s in T_StuInfo where s.StuNum=="1" // select new T_StuInfo {StuNum=s.StuName} //4,返回匿名类型 // from s in T_StuInfo where s.StuName=="1" // select new{name= s.StuName} /,5,对返回结果进行操作 // from s in T_StuInfo where s.StuNum=="1" // select s.ToString() //
对于语句,我们可以在linq pad里面转换成lambda表达式,如下:
二,selectMany使用
selectMany方法方法可以去除for二重循环的判断select,非常好用。
示例如下:
///SelectMany //SelectMany原型: //////public static IEnumerable<TResult> SelectMany<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>> selector) //string实现了IEnumerable<T>接口,可以构造这样的场景:查询组成学生姓名的所有字符序列。 // from s in T_StuInfo // from name in s.StuName // select name // T_StuInfo.SelectMany(s=>s.StuName,(s,name)=>name)
小结:
linq语句简化了查询,而且将查询的过程变得可调试,非常方便。