.net 4.0 EF4中的OrderBy Linq扩展有什么问题?

.net 4.0 EF4中的OrderBy Linq扩展有什么问题?,.net-4.0,entity-framework-4,linq-to-entities,.net 4.0,Entity Framework 4,Linq To Entities,我有以下两个电话,都是相同的,但结果是不同的 它是一个连接到本地数据库的简单控制台应用程序 DBContext db = new DBContext(); 这一个按预期排序 var q = from x in db.Cities orderby x.CountryCode, x.City select x; foreach(var x in q){ Console.WriteLine("{0}:{1}",x.CountryCode, x.City); }

我有以下两个电话,都是相同的,但结果是不同的

它是一个连接到本地数据库的简单控制台应用程序

DBContext db = new DBContext();
这一个按预期排序

var q = from x in db.Cities
        orderby x.CountryCode, x.City
        select x;

foreach(var x in q){
   Console.WriteLine("{0}:{1}",x.CountryCode, x.City);
}
但为什么这一个不按城市排序,它只按国家代码排序

foreach(var x in db.Cities.OrderBy(d=>d.City).OrderBy(d=>d.CountryCode)){
   Console.WriteLine("{0}:{1}",x.CountryCode, x.City);
}
若我更改OrderBy语句的顺序,那个么只有最后一个OrderBy似乎工作正常,但中间OrderBy根本并没有影响。这是EF或Linq扩展中的错误吗


我在重写查询方面没有问题,但我想知道OrderBy Linq扩展方法有什么问题?

我有一篇关于这方面的博文:

问题在于,第二个
OrderBy()
会推翻第一个。要解决此问题,可以将第二个
OrderBy()
替换为
ThenBy()
,如下所示:

db.Cities.OrderBy(d=>d.City).ThenBy(d=>d.CountryCode)

我有一篇关于这方面的博文:

问题在于,第二个
OrderBy()
会推翻第一个。要解决此问题,可以将第二个
OrderBy()
替换为
ThenBy()
,如下所示:

db.Cities.OrderBy(d=>d.City).ThenBy(d=>d.CountryCode)

将第二个OrderBy更改为ThenBy。

将第二个OrderBy更改为ThenBy。

这只是因为无知,我没有读MSDN,我只是认为它应该有效:)很高兴我不是唯一一个做出错误假设的人:-)这只是因为无知,我没有读MSDN,我只是认为它会起作用:)很高兴我不是唯一一个做出错误假设的人:-)