首页 > 代码库 > Linq的一些应用1
Linq的一些应用1
一、Where的筛选功能
1、索引查询。where重载方法第一个参数查询对象,第二个参数计数器的索引,如:
找寻姓氏以x开头,索引为偶数的结果。
var races = Formulal.GetChampins().Where((r, index) => r.LastName.StartsWith("x") && index % 2 != 0); foreach (var r in races) { Console.WriteLine("{0:A}",r); }
2、类型筛选
可以选晒数组中不同类型的对象,如string和into类型。
Object[] data = http://www.mamicode.com/{ "one", 2, 3, "four", "five", 6 }; var query = data.OfType<string>();//筛选string类型的对象 foreach (var q in query) { Console.WriteLine(q); }
二、复合from子句
第二个子句访问第一个子句返回的对象
var ferrariDrivers = from r in Formulal.GetChampins() from c in r.Cars where c == "Ferrari" orderby r.LastName select r.FirstName + "" + r.LastName; foreach (var r in ferrariDrivers) { Console.WriteLine(r); }
复合子句可以用SelectMany方法搞定。
var ferrariDrivers = Formulal.GetChampins().SelectMany(r => r.Cars, (r, c) => new { Racer = r, Car = c }) .Where(r => r.Car == "Ferrari").OrderBy(r => r.Racer.LastName) .Select(r => r.Racer.FirstName + "" + r.Racer.LastName); foreach (var r in ferrariDrivers) { Console.WriteLine(r); }
SelectMany方法定义如下:
public static IEnumerable<TResult> SelectMany<TSource,Tcollection,TResult>
(this IEnumerable<TSource> source,Func<TSource,IEnumerable<Tcollection>> collectionSelector,Func<TSource,Tcollection,TResult> resultSelector)
第一个参数隐式参数,接受Racer对象序列。第二个参数是collectionSelector委托,定义内部序列,如r=>r.Cars。第三个参数是一个委托,创建一个匿名类型,该对象含有Racer和Cars属性
Linq的一些应用1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。