2011-09-06 16 views
8

का उपयोग कर डेटटाइम विशेषता में दिनांकों की तुलना करने का सरल तरीका मैं निम्नलिखित कोड को चलाने की कोशिश कर रहा हूं, लेकिन तुलना मेरी इकाइयों को सौंपने में विफल नहीं होती है।एंटिटी फ्रेमवर्क 4 और लिंक क्वेरी

यह 06/09/2011 0:00:00 से 06/09/2011 12:25:00 की तुलना कर रहा है, बाद में मेरा डेटाबेस रिकॉर्ड मान है। इसलिए यही कारण है कि तुलना विफल हो रही है और मुझे आवश्यक रिकॉर्ड्स नहीं मिल रहे हैं।

मैं तारीखों से मेल खाने की तुलना करने की कोशिश कर रहा हूं, मुझे उस समय की परवाह नहीं है।

DateTime today = DateTime.Now.Date; 
var newAuctionsResults = repo.FindAllAuctions() 
         .Where(a => a.IsActive == true || a.StartTime.Value == today) 
         .ToList(); 

मैं केवल तिथियों की तुलना कैसे कर सकता हूं?

निर्दिष्ट प्रकार सदस्य 'तिथि' संस्थाओं के लिए LINQ में समर्थित नहीं है:

तो .StartTime.Value भाग में .Date संपत्ति का उपयोग करें, मैं एक अपवाद मिलता है। केवल प्रारंभकर्ता, इकाई सदस्य, और इकाई नेविगेशन गुण समर्थित हैं।

+0

शायद यह प्रश्न मदद करेगा? LINQ | मैं एक लिंक क्वेरी में दिनांक तुलना कैसे करूं? http://stackoverflow.com/questions/1088212/linq-how-do-i-perform-date-comparison-in-a-linq-query – Kyle

उत्तर

16

आप व्यक्तिगत सदस्यों का उपयोग कर सकते हैं:

var newAuctionsResults = repo.FindAllAuctions() 
         .Where(a => a.IsActive == true 
            || (a.StartTime.Value.Year == todayYear 
             && a.StartTime.Value.Month == todayMonth 
             && a.StartTime.Value.Day == todayDay)) 
         .ToList(); 

... या the other methods/properties supported in L2E में से किसी का उपयोग करें।

+0

इसका उपयोग बराबर ऑपरेटर के लिए किया जा रहा है। अगर मुझे ऑपरेटर से अधिक से कम की जांच करने की आवश्यकता है तो क्या होगा। –

-1

DateTime todayStart = DateTime.Now.Date; 
DateTime todayEnd = DateTime.Now; 
var newAuctionsResults = repo.FindAllAuctions() 
         .Where(a => a.IsActive == true || (a.StartTime.Value >= todayStart && a.StartTime.Value <= todayEnd)) 
         .ToList(); 
-2

आप

DateTime.ToShortDateString() 

http://msdn.microsoft.com/en-us/library/system.datetime.toshortdatestring.aspx

का उपयोग कर इस बार उपेक्षा हैं परिवर्तित कर सकते हैं की कोशिश करो।

फिर दो स्ट्रिंग्स की तुलना करें।

if(string1 == string2) 
{ 
//Do Something 
} 
+6

[L2E में समर्थित नहीं है] (http://msdn.microsoft.com /en-us/library/bb738681.aspx), मुझे डर है। –

11

तुम भी नाम स्थान System.Data.Objects

पूर्व के तहत EntityFunctions.TruncateTime() उपयोग कर सकते हैं।

db.Orders.Where(i => EntityFunctions.TruncateTime(i.OrderFinishDate) == EntityFunctions.TruncateTime(dtBillDate) && i.Status == "B") 

आकर्षण की तरह काम करता है।

+1

फिर आप यूनिटटेस्ट कैसे लिखते हैं? –

+0

EntityFunctions अब अप्रचलित हैं, इसके बजाय डीबीफंक्शन का उपयोग करें! –

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