レコードをDisplayOrderという列に基づいて昇順に並べ替える必要があります。 DisplayOrderがnullまたは0の場合、これらのレコードは最後に来るはずです。デフォルトでは、0またはnullのDisplayOrderがトップレコードとして表示されます。私はNULL DisplayOrderを持つすべてのレコードがNULLでないDisplayOrderを持つレコードの後に表示され、DisplayOrderを持つすべてのレコードが正しくソートされることを保証するDisplayOrderによってソートされていることを確認したいと思います。LINQ:NULL値を持つ昇順でレコードを最後にソート
ここで私はそれを達成しようとしていました。
public DataResponse<EKGType> GetByPage(KendoGridPost kendo)
{
try
{
DataResponse<EKGType> response = new DataResponse<EKGType>(ResponseType.Failure);
using (BusinessEntities context = new BusinessEntities())
{
IEnumerable<EKGTypes> items = context.EKGTypes
.ToList()
.Select(c => MapEntity(c))
.OrderBy(c => c.DisplayOrder.HasValue)
.ToList();
response.Data = items.Skip(kendo.Skip).Take(kendo.PageSize).ToList();
response.Count = items.Count();
response.ResponseType = ResponseType.Success;
}
return response;
}
catch (Exception ex)
{
return HandleDataResponseException<EKGType>(ex);
}
}
これは、最初にnull/0値を持つレコードを返します。私は過去1時間を探していて、SQLでそれを行う答えを見つけることができますが、linqではありません。
を入れた後? int.MaxValueエラーが発生しました "オペレータ '??'型 'bool'と 'int'のオペランドには適用できません " –
あなたは' .HasValue'を削除しましたか?それだけです 'c.DisplayOrder ?? int.MaxValue' has not HasValue' –
@RenéVogtその解決策はnull値で機能しますが、0も最後に来る必要はありますか? – itsme86