2009-07-10 8 views
21

मैं एक परियोजना पर काम कर रहा im के लिए SQL को LINQ का उपयोग शुरू कर दिया है और मैं जब दिनांक समय क्षेत्र द्वारा आदेश देने किसी समस्या का सामना किया है लेकिन जब से दिनांक समय nulls की अनुमति देता है nulls कम से कम के रूप में आ रहे हैं वहां वास्तविक तिथियां।Linq में नल दिनांक समय आदेश SQL को

तो मैं काफी एक तारीख के साथ लोगों को शीर्ष पर रहना चाहता हूँ (किसी भी तरह का आदेश दिया है) तो सब कोई तिथि सेट के साथ लोगों को।

jobList = from ju in context.Job_Users_Assigned 
      where ju.UserID == user.ID 
      select ju.Job; 
return jobList.OrderByDescending(j => j.EndDate); 

उत्तर

45

यह एक हैक का एक सा है, लेकिन यह एसक्यूएल को Linq के साथ काम करने प्रकट होता है:

return from ju in context.Job_Users_Assigned 
      where ju.UserID == user.ID 
      orderby ju.Created ?? DateTime.MaxValue descending; 

तो मैं अधिकतम संभव दिनांक समय मूल्य प्रतिस्थापन हूँ जब वास्तविक "बनाएँ" मूल्य है शून्य। यह शीर्ष पर सभी शून्य मान डाल देगा।

एक अन्य दृष्टिकोण यह है कि दिनांक फ़ील्ड का मूल्य क्या है या नहीं। यह भी काम करता है:

return from ju in context.Job_Users_Assigned 
      where ju.UserID == user.ID 
      orderby ju.Created.HasValue descending 
      orderby ju.Created descending; 
+3

मैं क्यों बिल्कुल पर मेरी उंगली नहीं डाल सकते, लेकिन मैं अपने दूसरे समाधान काफी खूबसूरत –

+0

सवाल को देखते हुए फिर से मिल जाए, यह थोड़ा अस्पष्ट है कि क्या प्रश्नकर्ता अशक्त चाहता है के रूप में मूल्य पहले या नहीं (वह कहता है कि वह नहीं करता है, लेकिन फिर अवरोही क्वेरी का आदेश देता है)। किसी भी तरह से यह इन कोड स्निपेट्स में से किसी एक से एक छोटा कदम है जो वह चाहता है। –

+0

धन्यवाद मैट ठीक वही है जो मैं ढूंढ रहा था। और आदेश के लिए यह सिर्फ एक उदाहरण था, मुझे इसे अलग-अलग स्थानों में अन्य तरीकों का आदेश देना है, लेकिन शून्य मान हमेशा अंतिम होते हैं। – dkarzon

संबंधित मुद्दे