2013-07-11 6 views
9

समस्या के साथ: मुझे लगता है कि उन कुछ जहां रिकॉर्ड तिथि 2 तारीखों (dd/mm/yyyy)LINQ में 2 दिनांक समय चर की बस दिनांक भाग की तुलना करें एफई

सभी के बीच पड़ता के लिए खोज करने की अनुमति देता है एक खोज फॉर्म है रिकॉर्ड्स और ऑब्जेक्ट्स के प्रकार डेटाटाइम के प्रकार हैं, लेकिन मुझे तुलना करने की ज़रूरत है, जो तारीख भाग नहीं हैं।

MSDN के अनुसार, तारीख संपत्ति LINQ में समर्थित है लेकिन इस बयान के रूप में लिखा मुझे लैम्ब्डा भाग को .Date संलग्न करने के लिए अनुमति नहीं दी जाएगी:

त्रुटि:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

उदाहरण :

x.DateCreated.Date 

मुझे यकीन है कि इस समस्या को एक बहुत ऊपर आता हूँ - हो क्या मैं इसे हल करूँ?

मुझे लगता है मैं पैड < = हिस्सा

को 23:59:59 = 86,399 सेकेंड जोड़कर यहाँ बयान है द्वारा अन्य तिथि सकता है। (Db एक संदर्भ वस्तु है)

model.Contacts = 
       db.Prospects.Where(x => x.DateCreated >= df.Date && x.DateCreated <= dt.Date) 
        .OrderByDescending(x => x.DateCreated) 
        .Take(100) 
        .ToList(); 
+1

जब आप 'x.DateCreated.Date' को आजमाते हैं तो आपको कौन सा त्रुटि संदेश मिलता है? – Treb

+0

और किस प्रकार 'डेटक्रेटेड' है? –

+0

डेटक्रेटेड सिर्फ डेटटाइम प्रकार – Slinky

उत्तर

14

आप TruncateTime समारोह का उपयोग करना चाहिए:

EntityFunctions.TruncateTime(x.DateCreated) 
+6

'डीबीफंक्शन के साथ प्रतिस्थापित किया गया है। ट्राउटकेटटाइम' – gor

1

मैं निम्नलिखित समाधान

DateTime startDate = new DateTime(df.Year, df.Month, df.Day, 0,0,0); 
DateTime endDate = new DateTime(df.Year, df.Month, df.Day, 23,59,59); 

model.Contacts = 
       db.Prospects.Where(x => x.DateCreated >= startDate && x.DateCreated <= endDate) 
        .OrderByDescending(x => x.DateCreated) 
        .Take(100) 
        .ToList(); 
4

आप DbFunctions.TruncateTime का उपयोग करना चाहिए का उपयोग करें() इकाई फ्रेमवर्क संस्करण 6 में।

var fromDate = criteria.FromCreatedDate.Value.Date; 
items.Where(i => DbFunctions.TruncateTime(i.CreatedOnDate) >=fromDate); 

जिसका तारीख से अधिक fromdatetimepart अनदेखी है सभी आइटम पाने के लिए।

धन्यवाद @gor।

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