欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

Linq筛选、排序和联接

创建时间:2014年07月15日 09:04  阅读次数:(8190)
分享到:
在 from 开始子句以及 select 或 group 结束子句之间,所有其他子句(where、join、orderby、from、let)都是可选的。 任何可选子句都可以在查询正文中使用零次或多次。

where 子句

使用 where 子句可以根据一个或多个谓词表达式筛选掉源数据中的某些元素。 以下示例中的 where 子句含有两个谓词。
IEnumerable<City > queryCityPop =
    from city in cities
    where city.Population < 200000 && city.Population  > 100000
    select city;

orderby 子句

使用 orderby 子句可以按升序或降序对结果进行排序。 您还可以指定次要排序顺序。 下面的示例使用 Area 属性对 country 对象执行主要排序, 然后使用 Population 属性执行次要排序。
IEnumerable<Country > querySortedCountries =
    from country in countries
    orderby country.Area, country.Population descendingselect country;

ascending 关键字是可选的;如果未指定顺序,则它是默认排序顺序。 

join 子句

使用 join 子句可以根据每个元素中指定键之间的相等比较,对一个数据源中的元素与另外一个数据源中的元素进行关联和/或组合。 在 LINQ 中,联接操作是针对其元素具有不同类型的对象序列执行的。 在联接两个序列之后,必须使用 select 或 group 语句指定要存储到输出序列中的元素。 还可以使用匿名类型将每组关联元素中的属性组合为输出序列的新类型。 下面的示例对其 Category 属性与 categories 字符串数组中的某个类别相匹配的 prod 对象进行关联。 其 Category 不与 categories 中的任何字符串匹配的产品会被筛选掉。 select 语句投影了一个新类型,其属性取自 cat 和 prod。
var categoryQuery =
    from cat in categories
    join prod in products on cat equals prod.Category
    selectnew { Category = cat, Name = prod.Name };

通过使用 into 关键字将 join 操作的结果存储到临时变量中,还可以执行分组联接。 

let 子句

使用 let 子句可以将表达式(如方法调用)的结果存储到新的范围变量中。 在下面的示例中,范围变量 firstName 存储了 Split 返回的字符串数组的第一个元素。
string[] names = { "Svetlana Omelchenko", "Claire O'Donnell", "Sven Mortensen", "Cesar Garcia" };
IEnumerable<string > queryFirstNames =
    from name in names
    let firstName = name.Split(newchar[] { ' ' })[0]
    select firstName;

foreach (string s in queryFirstNames)
    Console.Write(s + " ");
//OutPut: Svetlana Claire Sven Cesar
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 59+86=? 的结果(结果是:145)
结  果: