Thursday, September 6, 2012

Use of Distinct and OrderBy in LINQ


Use of Distinct and OrderBy in LINQ


The requirement was something like: get the distinct values of (bla bla bla) sorted alphabetically. An example of the required query with Northwind would be the following one:
SELECT DISTINCT
        e.LastName
FROM    Orders o
LEFT JOIN [Employees] e
        ON e.[EmployeeID] = o.[EmployeeID]
ORDER BY e.LastName 
Fundamentally, we are using both a DISTINCT and an ORDER BY statement in SQL.
Now, if you create a NorthwindDataContext importing the Order and Employee tables, you can try to write a similar statement in LINQ to SQL. Unfortunately, the Distinct clause is not part of the query syntax and the most intuitive path could be the one of calling Distinct at the end of your statement, like in the following query:
var queryA =
    (from o in db.Orders
     orderby o.Employee.LastName
     select o.Employee.LastName)
     .Distinct();
However, the Distinct clause is removing the sort condition defined by the orderby keyword. In fact, the SQL statement sent to the database is the following one:
SELECT DISTINCT
        [t1].[LastName]
FROM    [dbo].[Orders] AS [t0]
LEFT OUTER JOIN [dbo].[Employees] AS [t1]
        ON [t1].[EmployeeID] = [t0].[EmployeeID]
This behavior might appear strange. The problem is that the Distinct operator does not grant that it will maintain the original order of values. Applied to LINQ to SQL, this mean that a sort constraint can be ignored in the case of a query like queryA.
The solution is pretty sample: put the OrderBy operator after the Distinct one, like in the following queryB definition:
var queryB = 
    (from o in db.Orders
     select o.Employee.LastName)
    .Distinct().OrderBy( n => n );
This will result in the following SQL statement sent to Northwind:
SELECT  [t2].[LastName]
FROM    ( SELECT DISTINCT
                    [t1].[LastName]
          FROM      [dbo].[Orders] AS [t0]
          LEFT OUTER JOIN [dbo].[Employees] AS [t1]
                    ON [t1].[EmployeeID] = [t0].[EmployeeID]
        ) AS [t2]
ORDER BY [t2].[LastName]

The lesson is: in a SQL query, the position of an operator is not relevant until operators belong to the same SELECT/FROM statement. In LINQ, this is not true and the conversion to SQL could remove LINQ operators when their operation might be ignored by other operators in the same LINQ query.

Monday, February 21, 2011

बाबा मेरो नैहर छुटो जाय

वो सिटी स्कूल के फिल्ड में घंटो खेलना, अपनी गली की दोस्तों के साथ वो लाल परी हरी परी तो कभी भरी दोपहरी में लगड़ी खेलने निकल जाना बॉस तले जाके सफेदाका को ढूड के उसको रोटी देना क्योंकि सब लोग उसको पागल कुत्ता बोलते थे कोई उसे रोटी नहीं देता जाने किस बात का गुस्सा था उसे जो बिना वजह सबके ऊपर भोका करता था वो , वो काली मई के मंदिर पे जाना वो कार्तिक की सुबहो में भोर गए ही अम्मा के साथ गंगा जी पे जाना वो पंडिताईन का हमे लाल टीका लगाना संकल्प छुडाना सब कितना सुकून भरा था वो गंगा जी की कल कल करती धारा सुबह सुबह न उठने के सौ बहाने बनाना सोने दो न रीचु दी पेट दुख रहा है , भाइयों का मुझे हर बात में सताना चिढाना और दुखी होके मेरा वो पूजा के कमरे में जाके रोना , जितना मन चाहे उतना रोना , और फिर अम्मा का वो प्यार वो उनकी गोद उनके ममता की छाव उनके आचल में छुप के सब दुख भूल जाना ! और फिर से वही सब चालू रोवा गाई क्योंकि पता था की ये सब के बाद एक मीठी छाओ एक प्यार भरा हाथ एक माँ का दिल है मेरे पास वो सब ठीक कर देगी वो सबको डांट लगाएगी की मुझे क्यों परेशान किया । पापा का वो सर पे हाथ फेरते ही जादू जैसे सारे दुःख दूर होना सुकून से सो जाना । अब वैसी नींद नहीं आती पापा अब तरसती हूँ माँ की गोद को उस ममता की छाओ को । दुःख और दर्द बेहिसाब बढ़ गए हैं पर उन्हें अपने प्यार से हमसे अलग करके सुकून से सुलाने वाले दूर हो गए हैं, हाय रे बाबा मेरो नैहर छुटो जाय हाय रे बाबा मेरो पीहर छुटो जाय ।

Thursday, January 6, 2011

self realisation-part 1

मैंने सोचा क्यों न इस नए साल नए वर्ष को स्वयं की पहचान का वर्ष बनाया जाए

वो कहते है ना की बुरा जो देखन मै चला, बुरा न मिलिया कोय , जो मन खोजा आपना तो मुझसे बुरा न कोय

और जो पहली बात खुद के बारे में समझ आई वो ये की कुछ तो खराबी है मुझमे जो आजतक मुझे एक अच्छा दोस्त नसीब नहीं हुआ या हुई , कोई एइसा नहीं जिससे मै अपना दुख बाट सकू, जिसके कंधे पे सिर रख के रो सकू, जो मुझे समझे और मुझे समझाये भी। पर जितना भी जानने की कोशिश करती हूँ कुछ भी समझ नहीं आता । मुझे जानने वालों हो सके तो आज मुझे ये बात समझा दो। क्यों नहीं बन सकी मै किसी की दोस्त और क्यों नहीं बना सकी किसी को अपना मित्र ।

Tuesday, September 21, 2010

धर्म,भगवान् और हम

भगवान् वैसे ही हैं जैसा रिश्ता

हम माने की एक औरत हमारी माँ है और हम जब भी मुश्किल में होंगे वो हमारा सहारा होगी, हमारे आशु पोछेगी और हमे आगे बढ़ने का हौसला देगी और हम चाहे तो ये भी सोच सकते हैं की माँ वो है जिसने हमे पैदा किया बस और कुछ भी नहीं किसी भी मुश्किल में वो कुछ नहीं कर सकती तो वो सच में कुछ नहीं कर पाएगी

धर्म वो है जो हमे इस रिश्ते पे विश्वास दिलाने की कोशिश करता है

और हम वो हैं जो चाहे तो विश्वास करे या फिर इस दुनिया में निरे अकेले रहे !

चाह हमारी है फैसला हमारा है

Wednesday, August 11, 2010

जिंदगी हुई सस्ती

जब मैंने पहली बार एक रोड एक्सिडेंट देखा तो रूह काप गयी
कभी सोचती चालक की गलती थी, कभी सोचती उस जल्दी में सड़क पार करते इंसान की शायद।
जब कुछ ही दिनों में दूसरी बार फिर तीसरी बार और फिर हर २-३ दिन में १ ,
लगा ओह भगवान् क्या इंसान की जान की कीमत कुछ भी नहीं ।
तो क्यों ये इंसान दूसरे इंसान को रौदते निकल जाते हैं, क्या उन्हें ये डर नहीं रह गया
की अपनी करनी का फल भोगना पड़ता है। शायद इसीलिए लोगों ने धर्मं बनाये थे
ताकि लोगों के दिल में कुछ तो प्यार होगा इंसान से, और डर होगा कुछ भी गलत करने से,
पर अब तो इंसान खुद को धर्मं और भगवान् से बढ़के मानने लगा है ।
कल की ही बात है ओउटर रिंग रोड सबसे भीडभाड की रोड पे एक भी बल्ब नहीं जल रहा था
धुत अँधेरे में लोग रास्ता पार कर रहे थे , और खुद को रोड एक्सिडेंट में स्वाहा कर रहे हैं
क्या है ये? क्या ये कोई सोची समझी चाल है ?

अब तो सुबह निकलते हुए भी डर लगता है जाने आज वापस लौट के घर पहुचेंगे या नहीं
हे भगवान् बहुत चला ली इंसानों ने अपनी मनमानी अब तो उन् पे लगाम लगाओ
वरना आपके बनाये इस खूबसूरत दुनिया को शमशान में बदलते देर नहीं लगेगी

सर्वे भवन्तु सुखिंह , सर्वे सन्तु निरामया
सर्वे भद्राणि पश्यन्तु , माँ कश्चिद दुख्भाग्भावेत

Tuesday, August 10, 2010

सावन

आया सावन झूम के !!!
बारीस के दिन है, खूब बारीस हो रही है
मै ही क्यूं सुखी रह जाऊ
बस निकल पड़ी उस दिन उनके साथ
यूं ही बारीस में घूमते रहे, लोग देखते कुछ जिज्ञासा से कुछ आश्चर्य से तो कुछ जलन से
हमे यूं घूमते और मस्ती करते पानी में छप्पा छई करते,झूला झूलते
दूसरे दिन ये हरी चूड़िया लेकर आये
लगा अभी बीते नहीं दिन सावन के
अब भी आता है सावन झूम के!!!!

Friday, July 30, 2010

वो रोई थी !!!

वो रोई थी फूट फूट के , अपनी माँ के आँचल में सिमट के, अपने भाई के कंधे से लगके , पिता के सीने से लगके ,बहनों से गले लगके हिचक हिचक के रोई थी अपनी बिदाई पे , सोचा मैंने नए घर जाने से या फिर शायद शहर से गाँव जाने के डर से या फिर गाँव में बिजली नहीं रहती मछर काटते हैं के डर से रो रही है बिचारी नयी नयी ब्याही बहिन

फिर से घर में शादी थी एक और बहिन की, मेरे सबसे करीब थी वो , वो भी रोई और बहुत रोई , शायद अनजाने ससुराल में कैसा व्यवहार मिलेगा वहां के डर से, खाना बनाने के डर से या फिर बर्तन धोने के डर से या फिर उस जीवनसाथी से जिसे २ महीने पहले जानती तक न थी वो , मैं फिर से डर गयी शादी के नाम से, पति के नाम से ससुराल के नाम से

फिर वो दिन भी आया मेरे ससुराल जाने का दिन, सासू माँ से खूब बाते होती मेरा डर कम हुआ, पति से बाते हुई और लगा की दुनिया में सिर्फ ख़ुशी है, नए कपड़े, जेवर सब मिलते हैं शादी में। बिदाई का वक्त आया मै ना रोई । हँसते-हँसते बिदा हुई मै , मैं बिलकुल भी न रोई

कुछ महीने बीत गए हैं शादी के, एक एक कर त्यौहार आ रहे हैं सारे , पर रिश्ते पराये हो गए हैं, नहीं नहीं मै ही परायी हो गयी हूँ शायद , अब्ब ससुराल ही मेरा अपना घर है, मेरा शहर मेरी गली मेरा घर सब पराया हो गया
सारे रिश्ते पीछे छुट गए हैं , अब्ब मेरे शहर को मेरे घर आने का इंतज़ार नहीं रहता। अब मै ब्याहता हो गयी हूँ । अब समझ आता है सब कुछ धीरे धीरे , वो बिदाई पे सबका रोना, बिलख बिलख के रोना, शीषक शीषक के रोना, फूट फूट के रोना

हाय रे मेरी अक्ल मै तो रो भी न पायी उस दिन !!!!