SELECT A.X, B.Y
FROM A JOIN B ON A.X = B.Y
यह LINQ विधि कॉल (शामिल होने के लिए) उत्पन्न होगा ऊपर में शामिल हों।
var query = A.Join
(
B,
a => a.x,
b => b.y,
(a, b) => new {a.x, b.y} //if you want more columns - add them here.
);
SELECT A.X, B.Y
FROM A LEFT JOIN B ON A.X = B.Y
ये LINQ विधि कॉल (GroupJoin, SelectMany, DefaultIfEmpty करने के लिए) का उत्पादन करेगा वाम ऊपर से जुड़ें
var query = A.GroupJoin
(
B,
a => a.x,
b => b.y,
(a, g) => new {a, g}
).SelectMany
(
z => z.g.DefaultIfEmpty(),
(z, b) =>
new { x = z.a.x, y = b.y } //if you want more columns - add them here.
);
यहाँ कुंजी अवधारणा है कि Linq के तरीकों पदानुक्रम के आकार का परिणाम है , पंक्ति-स्तंभ आकार flattened नहीं।
- Linq के
GroupBy
तत्वों की एक संग्रह (जो खाली नहीं छोड़ा जा सकता है) करने के लिए मिलान एक समूहीकरण कुंजी के साथ एक पदानुक्रम में आकार का परिणाम पैदा करता है। एसक्यूएल का GroupBy
क्लॉज समेकित मान के साथ समूहबद्ध कुंजी उत्पन्न करता है - इसके साथ काम करने के लिए कोई उप-संग्रह नहीं है।
- इसी तरह, लिंक का
GroupJoin
एक पदानुक्रमित आकार उत्पन्न करता है - एक अभिभावक रिकॉर्ड संग्रह बाल अभिलेखों (जो खाली हो सकता है) से मेल खाता है। एसक्यूएल का LEFT JOIN
कोई अन्य रिकॉर्ड नहीं होने पर प्रत्येक बच्चे के रिकॉर्ड से मेल खाता एक अभिभावक रिकॉर्ड उत्पन्न करता है, या एक शून्य बच्चा रिकॉर्ड बनाता है। लिंक के आकार से एसक्यूएल के आकार को प्राप्त करने के लिए, किसी को SelectMany
के साथ बाल अभिलेखों के संग्रह को अनपैक करना होगा - और DefaultIfEmpty
का उपयोग करके बाल अभिलेखों के खाली संग्रह से निपटना होगा।
और यहाँ linquifying पर मेरे प्रयास है कि प्रश्न में एसक्यूएल है:
var query =
from a in Appointment
where a.RowStatus == 1
where a.Type == 1
from b in a.AppointmentFormula.Where(af => af.RowStatus == 1).DefaultIfEmpty()
from d in a.TypeRecord //a has a type column and is related to a table named type, disambiguate the names
from e in a.AppointmentForm.DefaultIfEmpty()
order by a.Type
select new { a.AppointmentId, a.Status, a.Type, a.Title, b.Days, d.Description, e.Form }
क्या आप लिंक से एसक्यूएल का उपयोग कर रहे हैं? –