C# 使用linq和实体框架按日期订购

C# 使用linq和实体框架按日期订购,c#,linq,datetime,entity,sql-order-by,C#,Linq,Datetime,Entity,Sql Order By,我有以下代码: List<jogo> lista_realizados = tt.jogo.Where(c => c.activo == 1 && c.progresso == 2 && c.id_torneio == torn.id_torneio

我有以下代码:

List<jogo> lista_realizados = tt.jogo.Where(c => c.activo == 1 && 
                                                 c.progresso == 2 && 
                                                 c.id_torneio == torn.id_torneio)
                                     .ToList();
var q1 = lista_realizados.Select(c => new { resultado = c.resultado, 
                                            id = c.id_jogo,
                                            torneio = c.torneios.nome, 
                                            Data = c.data, 
                                            Hora = c.hora, 
                                            jogador = c.jogador.Nome_jogador, 
                                            jogador2 = c.jogador2.Nome_jogador, 
                                            Clube = c.clubeparceiro.nome, 
                                            agendadopor = c.alterado_por}) 
                          .OrderByDescending(p =>  p.Data.Value.Month )
                          .ToList();

gvListaJogos.DataSource = q1;


gvListaJogos.DataBind();
List lista\u realizados=tt.jogo.Where(c=>c.activo==1&&
c、 progresso==2&&
c、 id\u torneio==撕裂。id\u torneio)
.ToList();
var q1=lista_realizados.Select(c=>new{resultado=c.resultado,
id=c.id\u jogo,
torneio=c.torneios.nome,
Data=c.Data,
Hora=c.Hora,
jogador=c.jogador.Nome_jogador,
jogador2=c.jogador2.Nome_jogador,
Clube=c.clubeparceiro.nome,
agendadopor=c.alterado_por})
.OrderByDescending(p=>p.Data.Value.Month)
.ToList();
gvListaJogos.DataSource=q1;
gvListaJogos.DataBind();
我获取列表,然后尝试按字段
Data
对列表进行排序-它在sql中定义为
日期
。并且在代码中显示为
?Datetime


但是列表似乎是按字符串排序的,而不是按日期排序的。

我猜gvListaJogos是一个列表框


确保列表框的排序属性设置为false。

请显示jogoYou的定义,您可以说
数据
?DateTime
,但是您有
数据。Value
-
DateTime
没有
属性。那么,让我们看看jogo的定义。
Data
Data.Value
resp的类型是什么<代码>数据.Value.Month
?jogo在数据库中定义为日期。。我正在使用实体框架获取对象。。数据显示为DateTime?当您必须处理nullable时,我总是使用三元运算符。因此,在您的情况下,我会这样做:
OrderByDescending(p=>(p.Data!=null)?p.Data.Value.Month:12)
12是一个月内可能的最大值,因此任何空值都将列在最后。gvListaJogos这是一个gridview!