मेरे पास एसक्यूएल में एक उदाहरण है कि लिंक से एंटिटी में एक ही तर्क का उपयोग कैसे करें?LINQ से Entity में दो तिथियों के बीच कैसे खोजें?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
मेरे पास एसक्यूएल में एक उदाहरण है कि लिंक से एंटिटी में एक ही तर्क का उपयोग कैसे करें?LINQ से Entity में दो तिथियों के बीच कैसे खोजें?
SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE
मैं सी # मान रहा हूं।
DateTime startDate=bla;
DateTime endDate=blabla;
using(var db=new MyDataContext())
{
var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
//...
}
आप इसे प्रारंभ दिनांक को समावेशी होना चाहता हूँ जाएगा, लेकिन अनन्य अन्त तिथि पर। ऐसा इसलिए है क्योंकि 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
मानों का उपयोग कर रहे हैं, यह अभी भी महत्वपूर्ण >=
और <
, बजाय >=
और <=
या >
और <
उपयोग करने के लिए हो सकता है।
यदि आपने दोनों "या बराबर" संकेतों का उपयोग किया है, तो दो तारीखें एक्स से वाई तक और वाई से ज़ेड तक होती हैं, दोनों में रिकॉर्ड शामिल होंगे जो वास्तव में वाई से मेल खाते हैं। आपकी आवश्यकताओं के आधार पर यह रिकॉर्ड शामिल करने में गंभीर दोष हो सकता है दोनों तारीख सीमाओं में। इसी प्रकार, यदि आप >
और <
का उपयोग करते हैं, तो आप उन रिकॉर्ड्स को बहिष्कृत करेंगे जो दोनों दिनांक सीमाओं से बिल्कुल मेल खाते हैं।
'BETWEEN' के समान परिणाम देने के लिए'> = 'और' <= 'का उपयोग करें। –
मैं इस कारण से कभी भी BETWEEN का उपयोग नहीं करता हूं। मैं दूसरे रूप के स्पष्टीकरण को पसंद करता हूं। – spender
मेरे लिए यह काम नहीं किया LINQ से इकाई त्रुटि मिली। मैं डीबीसीएन्टेक्स्ट –