2

以下のコードでは:

var results = from service 
              in LogisticsService.GetTransportationModes<CarrierTransportationMode>
              (
                  x => x.CarrierId == carrierRoleId && 
                       x.ParentTransportationModeId != null &&
                       !(x is LoadCarrierMode) &&
                       (x.ParentTransportationMode.TransportationModeStatus != null) &&
                       x.ParentTransportationMode.TransportationModeStatus.Value != TransportationModeStatus.Inactive
               )
                       //.OrderByDescending(o => o.IsDefault)
                       //.ThenBy(t => t.ParentTransportationMode.Name)
               orderby service.IsDefault descending, service.ParentTransportationMode.Name
               select new
               {
                   text = service.ParentTransportationMode.Name,
                   value = service.ParentTransportationMode.Id
               };

が null の場合service.IsDefault、 orderby / thenby を完全にスキップする必要があります。したがって、次のように、linq に orderby が存在しないかのようにコードが実行されます。

var results = from service 
              in LogisticsService.GetTransportationModes<CarrierTransportationMode>
              (
                  x => x.CarrierId == carrierRoleId &&
                       x.ParentTransportationModeId != null &&
                       !(x is LoadCarrierMode) &&
                       (x.ParentTransportationMode.TransportationModeStatus != null) &&
                       x.ParentTransportationMode.TransportationModeStatus.Value != TransportationModeStatus.Inactive
              )
              select new
              {
                  text = service.ParentTransportationMode.Name,
                  value = service.ParentTransportationMode.Id
              };

以下のような条件でクエリを変更しようとしました:

.OrderByDescending(o => o.IsDefault.HasValue ? o.IsDefault : null)
.ThenBy(t => t.IsDefault.HasValue ? t.ParentTransportationMode.Name : null)
orderby !service.IsDefault.HasValue ? null: service.IsDefault descending, service.ParentTransportationMode.Name

しかし、それは役に立ちませんでした。

条件付きで順序付けがまったく行われないように、orderby に特別なパラメーターを渡す必要がありますか? 「case」などのキーワードを使用できますか? もしそうなら、どのように?

助けていただければ幸いです!ありがとう!。

4

1 に答える 1