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!