Linq和排序空字段

Linq和排序空字段,linq,sql-order-by,Linq,Sql Order By,我有一个表(例如)有4列 pk\u table\u id INT NOT NULL username VARCHAR(100)不为空 start\u日期日期时间不为空 end_date DATETIME NULL 我的要求是按结束日期的降序返回所有行,但必须先返回空值,然后按开始日期的降序返回 我已经用SQL完成了这项工作,但是有人可以用LINQ版本来帮助我完成这项工作吗 这是我们使用的SQL查询: SELECT [person_employment_id] , [pa

我有一个表(例如)有4列

  • pk\u table\u id INT NOT NULL
  • username VARCHAR(100)不为空
  • start\u日期日期时间不为空
  • end_date DATETIME NULL
我的要求是按
结束日期的降序返回所有行,但必须先返回空值,然后按开始日期的降序返回

我已经用SQL完成了这项工作,但是有人可以用LINQ版本来帮助我完成这项工作吗

这是我们使用的SQL查询:

    SELECT [person_employment_id]
       , [party_id]
       , [employer_name]
       , [occupation]
       , [telephone]
       , [start_date]
       , [end_date]
       , [person_employment_type_id]
       , [person_employment_end_reason_type_id]
       , [comments]
       , [deleted]
       , [create_user]
       , [create_date]
       , [last_update_user]
       , [last_update_date]
       , [version]
    FROM [dbo].[person_employment] 
   WHERE ([party_id]=@party_id)
   ORDER BY ISNull([end_date],'9999-DEC-31') DESC, [start_date] DESC

对于这个问题,您可以对
结束日期
执行空检查,并将该结果用作排序。因此,您不需要使用相同的SQL结构来实现这一点,而是在您选择的语言中使用更自然的SQL结构(我假设是C)

var查询=
从dc.表中的行开始
让isEndDateNull=row.end\u日期==null
orderby isEndDateNull降序,row.start\u日期降序
选择行;

如果您在SQL中使用过,那么应该在问题中包括这一点。在LINQ查询中,您很快就能实现这一点。谢谢@Jeff-添加了查询。