मैं LINQ करने वाली एसक्यूएल और सब कुछ अच्छी तरह से जा रहा था जब तक कुछ अजीब हुआ के बारे में सीख रहा हूँ: नॉर्थविंड dabatase मैंने लिखा का उपयोग करDISTINCT() और orderby मुद्दा
मैं distinct
का एक उदाहरण करने की कोशिश की, तो, निम्न क्वेरी:
var query =
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
};
अगर मैं query
में संग्रहीत क्वेरी के लिए LINQ करने वाली एसक्यूएल द्वारा उत्पन्न एसक्यूएल प्रिंट यह इस तरह दिखता है:
SELECT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
ORDER BY [t0].[CustomerID]
तो, सामान्य रूप से, प्रश्न Orders
तालिका में क्रमशः क्रमशः क्रमशः Order
के लिए सभी CustomerID
लाता है।
लेकिन! अगर मैं Distinct()
विधि इस तरह का उपयोग करें:
var query = (
from o in db.Orders
orderby o.CustomerID
select new
{
o.CustomerID
}).Distinct();
क्वेरी Distinct
खंड के अपेक्षित परिणाम लाता है, लेकिन CustomerID
रों आदेश दिया नहीं कर रहे हैं के बावजूद मैं orderby o.CustomerID
लिखा है!
SELECT DISTINCT [t0].[CustomerID]
FROM [dbo].[Orders] AS [t0]
हम देख सकते हैं ** ORDER BY
खंड याद आ रही है:
इस दूसरे LINQ क्वेरी के लिए SQL क्वेरी निम्नलिखित है। ऐसा क्यों है?
ORDER BY
क्लॉज गायब हो जाता है जब मैं Distinct()
विधि का उपयोग करता हूं?
एक अलग रूप में लैम्ब्डा वाक्य रचना इस तरह के प्रश्नों के लिए बहुत सरल है के रूप में: 'वर क्वेरी = db.Orders.Select (ओ => ओ .CustomerId)। डिस्टिंक(); ' – asawyer