2009-06-10 14 views
5

है कि मैं यह जांचने की कोशिश कर रहा हूं कि तारीख या तारीख के साथ मेरी लिनक्स क्वेरी के अंदर बड़ा है या नहीं। लेकिन यह काम नहीं कर रहा है जैसे मैं चाहता हूँ।जांचें कि क्या तारीख इस तारीख या बड़ी

यह

मेरी कोड

 public bool CheckMonth(int month) 
    { 
      if (month > System.DateTime.Now.Month) 
      { 
       return true; 
      } 
      else if (month == System.DateTime.Now.Month) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
    } 

    public virtual IList<DateItem> GetThreeDateToList() 
    { 
     var data = new ScoutDataDataContext(); 

     var q = (from d in data.DateDetails 
       where d.Activate == 1 && CheckMonth(d.EndDate.Month) 
       orderby d.Date.Date.Month descending 
       select new DateItem 
       { 
        Title = d.Title, 
        Date = d.Date.Date + " - " + d.EndDate.Date, 
        Link = d.Link, 
       }).Take(3); 

     return q.ToList(); 
    } 

किसी को भी जो एक अलग तरह से nows?

+0

आपकी समस्या का सबसे बड़ा हिस्सा है, लेकिन CheckMonth लिखा जा सकता है सार्वजनिक bool CheckMonth (: आप (वर्ष और दिन सहित) तिथि की तुलना करना चाहते हैं, तो इस तुलना आप के लिए काम करेगा) { वापसी महीने> = System.DateTime.Now.Month; } –

+0

यह जानना उपयोगी होगा कि यह क्या कर रहा है और आप इसे क्या करना चाहते हैं? क्या यह अपवाद फेंक रहा है? गलत मूल्य? – bytebender

उत्तर

24

आप क्या करना चाहते हैं? आपके पाठ के मुताबिक आप यह जानना चाहते हैं कि दी गई तारीख आज या बाद में है, लेकिन कोड नमूना केवल महीने की तुलना करता है (जिसका मतलब है कि जून इस साल जून के समान है)। पूर्णांक महीने

yourDate.Date >= DateTime.Now.Date 
नहीं
+1

का उपयोग करता हूं आप डेटटाइम का उपयोग करके पठनीयता में सुधार कर सकते हैं। आज –

0

यहां प्रदाता क्या है? LINQ करने वाली एसक्यूएल? वस्तुओं? इकाई की रूपरेखा? (नाम से, यह LINQ-to-SQL जैसा दिखता है ...)

दरअसल, डेटाबेस प्रदाता आपकी विधि को संसाधित नहीं कर पाएंगे;

  • यह इनलाइन: आप कुछ ही विकल्प हैं एक यूडीएफ को && d.EndDate.Month >= System.DateTime.Now.Month
  • नक्शा यह (LINQ करने वाली एसक्यूएल केवल) है कि एक DateTime

स्वीकार करता है पहले शायद आसान है ... यदि आपको इसके साथ समस्याएं आ रही हैं, तो सिस्टम को पहचान नहीं है। डेटटाइम.अब.मोन्थ, तो पहले इसे एक चर में करें।

+0

लिंक-टू-एसक्यूएल यह है कि मैं –

0

यह केवल जांच कर रहा है कि यह महीना वर्तमान माह से अधिक है, इसलिए 4 जुलाई, 1776 पास होगा। मुझे लगता है कि आप पूरी तारीख देखना चाहते हैं? यह करें:

var q = (from d in data.DateDetails 
      where d.Activate == 1 && d.EndDate > DateTime.Now) 
      orderby d.Date.Date.Month descending 
      select new DateItem 
      { 
       Title = d.Title, 
       Date = d.Date.Date + " - " + d.EndDate.Date, 
       Link = d.Link, 
      }).Take(3); 

अन्य बिंदुओं के एक जोड़े:

 if (month < System.DateTime.Now.Month) 
     { 
      return true; 
     } 
     else if (month == System.DateTime.Now.Month) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 

रूप में एक ही है: वापसी महीने> = System.DateTime.Now;

मुझे लगभग वही कहना चाहिए, क्योंकि आप अनावश्यक रूप से डेटटाइम को कॉल कर रहे हैं.अब दो बार, और आप अलग-अलग मानों के साथ समाप्त हो सकते हैं। कॉल डेटटाइम.अब एक बार और इसे एक चर में रखें ताकि यह सुनिश्चित किया जा सके कि आप लगातार एक ही समय की जांच कर रहे हैं।

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