2009-10-19 12 views
1

J'ai une procédure stockée SQL qui utilise isnull dans l'ordre par la clause de commander des articles par la dernière date de réponse, ou si cela est nul, la date d'affichage:Comment utiliser une décision de type isnull dans linqdatasource orderby?

Exemple: ORDER BY isnull (rtb.LatestReplyDate , CB_TOPIC_DATE_POSTED) CEEPC

Je suis en train de faire que travailler dans la clause de orderby d'un LinqDataSource, en vain encore: Exemple:

Je sais isnull est pas valable, mais j'ai encore à comprendre ce qui fonctionnerait, si quelque chose. J'ai essayé le ?? opérateur aussi bien. Des idées?

Répondre

4

Check this linq..err...link

--Addendum

OrderBy(p => p.<YourCompareVariant> == null ? p.<IfNull> : p.<IfNotNull>); 

Dans votre cas:

OrderBy(p => p.LatestReplyDate == null ? p.LatestReplyDate : p.TopicDatePosted); 
+0

Je l'ai déjà vu, mais ce n'est pas exactement ce que je cherchais. Je me demandais s'il y avait un moyen d'appliquer très simplement un isnull à la linqdatasource déclarative, plutôt que de déconner par programmation dans le code derrière. –

+0

@ Michael pls voir modifier ... est-ce quelque chose sur les lignes que vous cherchez –

+0

Exactement ce que je cherchais aussi. Merci beaucoup – Oppdal

1

@Xencor, voici ce qui a fonctionné:

<asp:LinqDataSource OrderBy="(CB_DATE_LATEST_REPLY != null ? CB_DATE_LATEST_REPLY : CB_TOPIC_DATE_POSTED) desc" Select="new (CB_TOPIC_ID, CB_TOPIC_CAT_ID, CB_TOPIC_TITLE, CB_TOPIC_DATE_POSTED, CB_TOPIC_REPLY_COUNT, CB_DATE_LATEST_REPLY, LU_CB_CATEGORy, VIEW_ALL_USER)" TableName="CB_TOPICs" > </asp:LinqDataSource> 

Ce qui est évident, je ne ne sais pas h J'ai réussi à rater ça. C'est la vie. Merci de m'avoir indiqué dans la bonne direction.

Questions connexes