c# - How to re-write this inner join subquery from SQL to Lambda -
का चयन करें ulcch.ID, ulcch.UserLoginHistoryID, ulcch.StatusID, ulcch.ClientModuleID, ulcch.DeviceState, ulcch। UpdatedAt, ulcch.CreatedUserLoginClientConnectionHistory AS ulcch INNER से जुड़ें (का चयन करें MAX (बनाया गया) अधिकतम के रूप में UserLoginClientConnectionHistory AS ulcch1 GROUP द्वारा UserLoginHistoryID) एम पर m.MaxCreatedAt = ulcch.CreatedAt
वहाँ कर सकते हैं इस प्रवेश तालिका में प्रति दिन 'डिवाइस राज्य' के बहुत सारे अपडेट हो सकते हैं। यह क्वेरी प्रत्येक दिन के लिए अंतिम अनूठे एक देता है।
मुझे यह लम्ब्डा स्टेटमेंट के रूप में पुनः लिखे जाने चाहिए। यह कितनी दूर मुझे मिल गया, मुझे नहीं पता कि मैं सही रास्ते पर हूं और मेरा मैक्स ()
एक प्रकार की त्रुटि को फेंक रहा है, संभवत: क्योंकि समूह एक अन्य सूची या कुछ बना रहा है ... आशा है कि आप इसे अपने ऑब्जेक्ट उदाहरण से निकाल सकते हैं ....: एस
userlogin.UserLoginClientConnectionHistories.Where (x = & gt; x.CreatedAt == userLoginClientConnectionHistoryRepository.GetAll (जेनेरिकस्टैटस सक्रिय) .GroupBy (y = & gt; y.UserLoginHistoryID)। मैक्स (y = & gt; y.CreatedAt));
मुझे लगता है कि यह आपकी इच्छानुसार है:
Var परिणाम = यूजर लोगिन। यूज़र लॉगिन क्लाइंट कॉनटेक्शन हिसरीज। ग्रुपबी (y = & gt; नया {आईडी} = यू। यूसर लिगिनइतिहासआईडी, दिन = y.CreatedAt.Date})। चयन करें (x = & gt; नया {आईडी = x.की.आईडी, दिन = एक्स.के.दिन, सबसेअधिक = x.Max (y = & gt; y.CreatedAt)});
इसके लिए एक परीक्षण किया गया है:
सार्वजनिक वर्ग कार्यक्रम {class Login Entry {public int UserLoginHistoryID {get; सेट; } सार्वजनिक दिनांक समय बनाया {प्राप्त करें; सेट; }} वर्ग UserLogin {सार्वजनिक सूची & lt; LoginEntry & gt; UserLoginClientConnectionHistories = नई सूची & lt; LoginEntry & gt; (); } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] एआरजीज़) {यूजरओगिन यूज़रलागिन = नया यूज़रलागिन (); UserLogin.UserLoginClientConnectionHistories = नई सूची & lt; LoginEntry & gt; {नई लॉगइन इन्टरी {यूजरलोगिनएचिआईआईडीआईडीआई = 1, निर्मितआयात = नया दिनांकटाइम (200 9, 1, 1, 3, 0, 0)}, नई लॉगइनइन्री {यूज़रलोगिनहाइटिआईआईडीआई = 1, बना दिया गया है = नया दिनांकटाइम (200 9, 1, 1, 15, 0, 0 )}, नई लॉग इन इन्टरी {यूज़रलोगिनएचिआईआईडीआईडीआई = 1, निर्मितआयात = नया दिनांकटाइम (200 9, 1, 3, 11, 0, 0)}, नई लॉगिनइंट्री {यूजरलोगिनहइतिआईडीआईडी = 1, निर्मितआइट = नया दिनांकटाइम (2009, 1, 1, 10, 0 , 0)}, नई लॉगिनइंट्री {UserLoginHistoryID = 2, CreatedAt = नई दिनांकटाइम (200 9, 1, 3, 4, 0, 0)}, नई लॉग इनइनरी {यूज़रलागिनएचिडीआईडीआईडी = 2, बना दिया गया है = नया दिनांकटाइम (2009, 1, 3, 5 , 0, 0)},}; Var परिणाम = युजर लॉगिन। यूज़र लॉगिन क्लिनट्यूंसहिस्ट्रीज़ .समूह (y = & gt; नया {आईडी} = यू। यूज़र लॉगिन इतिहासइड्, दिन = y.CreatedAt.Date})। चयन करें (x = & gt; नया {आईडी = x.Key.Id, दिन = x .की.दिन, सबसेअधिक = x.Max (y = & gt; y.CreatedAt)}); Foreach (परिणाम में var आइटम) {Console.WriteLine ("उपयोगकर्ता {0}, दिन {1}, सबसे हाल ही में {2}", item.Id, item.Day, item.MostRecent); }}}
आउटपुट:
उपयोगकर्ता 1, दिन 01-01-2009 00:00:00, सबसे हाल ही में 01-01-2009 15: 00:00 उपयोगकर्ता 1, दिन 03-01-2009 00:00:00, सबसे हाल ही में 03-01-2009 11:00:00 उपयोगकर्ता 2, दिन 03-01-2009 00:00:00, सबसे हाल ही में 03-01 -2009 05:00:00
Comments
Post a Comment