2009-08-31 11 views
5
  • एंटिटी फ्रेमवर्क के माध्यम से डेटाटाइम फ़ील्ड से औसत समय कैसे प्राप्त करें?
  • एक से दूसरे दिनांक को कैसे घटाएं?

मैं की तरह कुछ की सोच रहा हूँ:डीबी से औसत डेटाटाइम प्राप्त करें और

ObjectQuery<Visit> visits = myentitys.Visits; 
      var uQuery = 
      from visit in visits 
      group visit by visit.ArrivalTime.Value.Day into g 
      select new 
      { 
       Day = g.Key, 
       Hours = g.Average(visit => (visit.LeaveTime.Value - visit.ArrivalTime.Value).TotalMinutes) 
      }; 

एक आगंतुक दिवस के आधार पर वर्गीकृत की औसत निवास समय मिलता है।

उत्तर

1

मुझे डेटाबेस से डेटा प्राप्त होगा, और फिर स्मृति में औसत कार्य करें। हालांकि मुझे यकीन है कि क्या perfomances पर प्रभाव हो सकता है नहीं कर रहा हूँ ...

  List<Visit> visits = myentitys.Visits.ToList();//Get the Visits entities you need in memory, 
              //of course,you can filter it here 
      var uQuery = 
      from visit in visits 
      group visit by visit.ArrivalTime.Value.Day into g 
      select new 
      { 
       Day = g.Key, 
       Hours = g.Average(visit => (visit.LeaveTime.Value - visit.ArrivalTime.Value).TotalMinutes) 
      }; 

गणित आपरेशन इस तरह की एसक्यूएल क्वेरी में अनुवाद करने के लिए संभव नहीं है (अपवाद का कहना है की तरह: DbArithmeticExpression तर्क एक अंकीय आम प्रकार होना आवश्यक है), लेकिन स्मृति में वस्तुओं के साथ यह संभव है।

उम्मीद है कि इससे मदद मिलती है।

+1

मैं इस रूप में अच्छी तरह पसंद करते हैं; आप स्वयं को SQL फ़ंक्शंस में नहीं डाल रहे हैं। मुझे यकीन नहीं है कि आपको वोट क्यों दिया गया। –

+0

+ 1, @ किर्क +1, मैं नहीं बल्कि गैर एसक्यूएल सर्वर आवश्यक विकल्पों के बारे में पिछले पता के साथ-साथ था। – Maslow

7

करने का तरीका यहां ऐसा करते हैं, अपने समर्थन की दुकान संभालने एसक्यूएल सर्वर है। वैसे, मैंने जो टाइप किया वह एक टाइपो था जिसे मैंने सही किया - आप घंटे नामक फ़ील्ड में कुल संख्या असाइन करते हैं। मैंने भविष्य के दर्शकों के प्रयोजनों के लिए क्षेत्र को मिनटों में बदल दिया।

ObjectQuery<Visit> visits = myentitys.Visits; 
var uQuery = from visit in visits 
      group visit by visit.ArrivalTime.Value.Day into g 
      select new 
      { 
       Day = g.Key, 
       Minutes = g.Average(visit => System.Data.Objects.SqlClient.SqlFunctions.DateDiff("m", visit.LeaveTime.Value, visit.ArrivalTime.Value)) 
      }; 

ऐसा नहीं है कि LINQ संस्थाओं के लिए एक DateDiff में दिनांक समय घटाव के आंतरिक रूपांतरण का समर्थन नहीं करता है और फिर एक परिणाम के रूप में एक TimeSpan वस्तु उपज निराशाजनक है।

+0

+1 उपयोगी जवाब। – Maslow

+1

+1 "यह निराशाजनक है कि LINQ संस्थाओं के लिए दिनांक समय के आंतरिक रूपांतरण का समर्थन नहीं करता" – billy

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