2010-04-29 16 views

उत्तर

27

मैं सी # मान रहा हूं।

DateTime startDate=bla; 
DateTime endDate=blabla; 
using(var db=new MyDataContext()) 
{ 
    var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate); 
    //... 
} 
+9

'BETWEEN' के समान परिणाम देने के लिए'> = 'और' <= 'का उपयोग करें। –

+0

मैं इस कारण से कभी भी BETWEEN का उपयोग नहीं करता हूं। मैं दूसरे रूप के स्पष्टीकरण को पसंद करता हूं। – spender

+0

मेरे लिए यह काम नहीं किया LINQ से इकाई त्रुटि मिली। मैं डीबीसीएन्टेक्स्ट –

5

आप इसे प्रारंभ दिनांक को समावेशी होना चाहता हूँ जाएगा, लेकिन अनन्य अन्त तिथि पर। ऐसा इसलिए है क्योंकि DateTime एक तिथि के रूप में उपयोग किया जाता है वास्तव में उस दिन की शुरुआत होती है, और दिन के अंत तक नहीं बढ़ती है।

// dates that are inclusive on the date range 
var startDate = new DateTime(2016, 1, 1); 
var endDate = new DateTime(2016, 12, 31); 

... 

// WRONG: this will ignore data on the last day 
.Where(obj => obj.StartDate >= startDate && obj.EndDate <= endDate) 

// RIGHT: this will include the last day 
var endDateExclusive = endDate.AddDays(1); 

... 

.Where(obj => obj.StartDate >= startDate && obj.EndDate < endDateExclusive) 

यहां तक ​​कि अगर आप विशिष्ट DateTime मानों का उपयोग कर रहे हैं, यह अभी भी महत्वपूर्ण >= और <, बजाय >= और <= या > और < उपयोग करने के लिए हो सकता है।

यदि आपने दोनों "या बराबर" संकेतों का उपयोग किया है, तो दो तारीखें एक्स से वाई तक और वाई से ज़ेड तक होती हैं, दोनों में रिकॉर्ड शामिल होंगे जो वास्तव में वाई से मेल खाते हैं। आपकी आवश्यकताओं के आधार पर यह रिकॉर्ड शामिल करने में गंभीर दोष हो सकता है दोनों तारीख सीमाओं में। इसी प्रकार, यदि आप > और < का उपयोग करते हैं, तो आप उन रिकॉर्ड्स को बहिष्कृत करेंगे जो दोनों दिनांक सीमाओं से बिल्कुल मेल खाते हैं।

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