LINQ的linq orderby 降序有多个字段

> linq OrderBy 方法 两个字段同时排序有关问题
linq OrderBy 方法 两个字段同时排序有关问题
Johnyuan & &
发布时间: & &
浏览:281 & &
回复:3 & &
悬赏:0.0希赛币
linq OrderBy 方法 两个字段同时排序问题OrderBy(c =& c.name
)再加一个字段倒序排怎么写。
OrderBy(c =& c.shipper_name
).OrderByDescending(c =& c.Time)
这样写结果是不对的。。请教该怎么写
var values = from u in users
where u.ID & 6
orderby u.Username descending,u.ID ascending
join1114 & &
& & (0)(0)引用
var q = db.Customers.OrderBy(c =& c.City).ThenBy(c =& c.ContactName).ToList();
johson & &
& & (0)(0)引用探讨 var q = db.Customers.OrderBy(c =& c.City).ThenBy(c =& c.ContactName).ToList();guwei0512 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&&&&&&&&&&
要对序列排序,前面使用了 orderby  子句。下面复习一下前面使用 orderby descending  子句的例子。其中
赛手按照赢得比赛的次数进行降序排序,赢得比赛的次数是用关键字选择器指定的:
private static void Ordering()
var racers = from r in Formula1.GetChampions()
where r.Country == &Brazil&
orderby r.Wins descending
foreach (var racer in racers)
Console.WriteLine(&{0:C}: {0:L}, {0:F}&, racer);
//属性名的第一个字母
orderby  子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法:
var racers = Formula1.GetChampions().
Where(r = & r.Country == &Brazil&).
OrderByDescending(r = & r.Wins).
Select(r = & r);
OrderBy() 和 OrderByDescending  ()方法返回 IOrderEnumerable&TSource&。这个接口派生于接口
IEnumerable&TSource&,但包含一个额外的方法CreateOrderedEnumerable- &TSource&()。
这个方法用于进一步给序列排序。
如果根据关键字选择器来排序,两项的顺序相同,就可以使用 ThenBy()和 ThenByDescending  ()方法继续排序。
这两个方法需要 IOrderEnumerable&TSource&才能工作,但也返回这个接口。
所以,可以添加任意多个 ThenBy()和 ThenByDescending ()方法,对集合排序。
使用 LINQ  查询时,只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby  子句中。
所有的赛手先按照国家排序,再按照姓氏排序,最后按照名字排序。
添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10  个结果:
private static void Ordering()
var racers = (from r in Formula1.GetChampions()
orderby r.Country, r.LastName, r.FirstName
select r).Take(10);
foreach (var racer in racers)
Console.WriteLine(&{0:C}: {0:L}, {0:F}&, racer);
//属性名的第一个字母
Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作:
private static void Ordering()
var racers = Formula1.GetChampions().
OrderBy(r =& r.Country).
ThenBy(r =& r.LastName).
ThenBy(r =& r.FirstName).
foreach (var racer in racers)
Console.WriteLine(&{0:C}: {0:L}, {0:F}&, racer);
//属性名的第一个字母
阅读(...) 评论()LINQ的OrderBy有多个字段_百度知道
LINQ的OrderBy有多个字段
INQ 按多个字段排序( foreach (var racer in racers) { Console.FirstName)。
查询时.FirstName select r); r,就可以使用 ThenBy()和 ThenByDescending
()方法继续排序.Country, racer);。 这里;Brazil&quot.Take(10),只需把所有用于排序的不同关键字(用逗号分隔开)添加到orderby
子句中. Where(r = &gt.LastName). OrderBy(r =&gt,但也返回这个接口, r,orderby descending 子句解析为OrderBy Descending()方法; r.Country == & r, 所有的赛手先按照国家排序;/ foreach (var racer inracers) { Console。这个接口派生于接口 IEnumerable:F}&&#47.GetChampions().WriteLine(& &#47.LastName:F}&quot: var racers = Formula1: {0. ThenBy(r =&gt, racer). OrderByDescending(r = & r), {0、Take)
子句解析为 OrderBy()方法.WriteLine(&quot。 这两个方法需要 IOrderEnumerable才能工作.Country).GetChampions(); OrderBy() 和 OrderByDescending
()方法返回 IOrderEnumerable: private static void Ordering() { var racers = (from r in Formula1、属性名的第一个字母 } }
Lambda表达式 使用OrderBy()和 ThenBy()方法可以执行相同的操作。 所以, {0,对集合排序:C}. Take(10):C};{0, r。 如果根据关键字选择器来排序.GetChampions()orderby r。 添加到 LINQ 查询结果中的Take()扩展方法用于提取前 10
个结果,最后按照名字排序: {0:L},两项的顺序相同. ThenBy(r =&. Select(r = &gt.Wins);); r,再按照姓氏排序,但包含一个额外的方法CreateOrderedEnumerable- ();{0。 这个方法用于进一步给序列排序: private static void Ordering() { var racers = Formula1:L}; &#47,可以添加任意多个 ThenBy()和 ThenByDescending ()方法
知道智能回答机器人
我是知道站内的人工智能,可高效智能地为您解答问题。很高兴为您服务。
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Basic LINQ Query Operations (C#)
Basic LINQ Query Operations
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
Basic LINQ Query Operations (C#)
Visual Studio 2015
本主题简要介绍 LINQ 查询表达式,以及您在查询中执行的一些典型类型的操作。注意如果您已熟悉查询语言(如 SQL 或 XQuery),则可以跳过本主题的大部分内容。阅读下一节中的“from 子句”来了解 LINQ 查询表达式中的子句的顺序。在 LINQ 查询中,第一步是指定数据源。像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它。在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 (customers) 和范围变量 (cust)。
//queryAllCustomers is an IEnumerable&Customer&
var queryAllCustomers = from cust in customers
范围变量类似于 foreach 循环中的迭代变量,但在查询表达式中,实际上不发生迭代。执行查询时,范围变量将用作对 customers 中的每个后续元素的引用。因为编译器可以推断 cust 的类型,所以您不必显式指定此类型。其他范围变量可由 let 子句引入。注意也许最常用的查询操作是应用布尔表达式形式的筛选器。此筛选器使查询只返回那些表达式结果为 true 的元素。使用 where 子句生成结果。实际上,筛选器指定从源序列中排除哪些元素。在下面的示例中,只返回那些地址位于伦敦的 customers。
var queryLondonCustomers = from cust in customers
where cust.City == "London"
您可以使用熟悉的 C# 逻辑 AND 和 OR 运算符来根据需要在 where 子句中应用任意数量的筛选表达式。例如,若要只返回位于“伦敦”AND 姓名为“Devon”的客户,您应编写下面的代码:
where cust.City=="London" && cust.Name == "Devon"
若要返回位于伦敦或巴黎的客户,您应编写下面的代码:
where cust.City == "London" || cust.City == "Paris"
通常可以很方便地将返回的数据进行排序。
orderby 子句将使返回的序列中的元素按照被排序的类型的默认比较器进行排序。例如,下面的查询可以扩展为按 Name 属性对结果进行排序。因为 Name 是一个字符串,所以默认比较器执行从 A 到 Z 的字母排序。
var queryLondonCustomers3 =
from cust in customers
where cust.City == "London"
orderby cust.Name ascending
若要按相反顺序(从 Z 到 A)对结果进行排序,请使用 orderby…descending 子句。使用 group 子句,您可以按指定的键分组结果。例如,您可以指定结果应按 City 分组,以便位于伦敦或巴黎的所有客户位于各自组中。在本例中,cust.City 是键。
// queryCustomersByCity is an IEnumerable&IGrouping&string, Customer&&
var queryCustomersByCity =
from cust in customers
group cust by cust.C
// customerGroup is an IGrouping&string, Customer&
foreach (var customerGroup in queryCustomersByCity)
Console.WriteLine(customerGroup.Key);
foreach (Customer customer in customerGroup)
Console.WriteLine("
{0}", customer.Name);
在使用 group 子句结束查询时,结果采用列表的列表形式。列表中的每个元素是一个具有 Key 成员及根据该键分组的元素列表的对象。在循环访问生成组序列的查询时,您必须使用嵌套的 foreach 循环。外部循环用于循环访问每个组,内部循环用于循环访问每个组的成员。如果您必须引用组操作的结果,可以使用 into 关键字来创建可进一步查询的标识符。下面的查询只返回那些包含两个以上的客户的组:
// custQuery is an IEnumerable&IGrouping&string, Customer&&
var custQuery =
from cust in customers
group cust by cust.City into custGroup
where custGroup.Count() & 2
orderby custGroup.Key
select custG
联接运算创建数据源中没有显式建模的序列之间的关联。例如,您可以执行联接来查找位于同一地点的所有客户和经销商。在 LINQ 中,join 子句始终针对对象集合而非直接针对数据库表运行。
var innerJoinQuery =
from cust in customers
join dist in distributors on cust.City equals dist.City
select new { CustomerName = cust.Name, DistributorName = dist.Name };
在 LINQ 中,您不必像在 SQL 中那样频繁使用 join,因为 LINQ 中的外键在对象模型中表示为包含项集合的属性。例如,Customer 对象包含 Order 对象的集合。不必执行联接,只需使用点表示法访问订单:
from order in Customer.Orders...
select 子句生成查询结果并指定每个返回的元素的“形状”或类型。例如,您可以指定结果包含的是整个 Customer 对象、仅一个成员、成员的子集,还是某个基于计算或新对象创建的完全不同的结果类型。当 select 子句生成除源元素副本以外的内容时,该操作称为“投影”。使用投影转换数据是 LINQ 查询表达式的一种强大功能。
此页面有用吗?
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
您对此内容的反馈非常重要。请告诉我们您的想法。
更多反馈?
1500 个剩余字符
我们非常感谢您的反馈。
开发人员中心

我要回帖

更多关于 linq orderby 动态 的文章

 

随机推荐