2009-11-04 18 views
20

में शामिल होने LINQ का उपयोग करसभी तालिकाओं के लिए सभी स्तंभों का चयन + LINQ

Sql में शामिल होने में कैसे तालिकाओं से सभी स्तंभों का चयन करने के लिए:

select CTRL_RUN_JOB.*, CTRL_DATA_STREAM.* 
from CTRL_RUN_JOB inner join CTRL_DATA_STREAM 
     on CTRL_RUN_JOB.DATA_STREAM_ID= CTRL_DATA_STREAM.DATA_STREAM_ID 

Linq:

from CTLJCRJOB in CTRL_RUN_JOBs 
join CTLRFDSTM in CTRL_DATA_STREAMs 
on CTLJCRJOB.DATA_STREAM_ID equals CTLRFDSTM.DATA_STREAM_ID 
select new { 
     CTLJCRJOB.* // ??? 
     ,CTLRFDSTM.* // ??? 
} 

धन्यवाद

उत्तर

28

जबकि आप उन्हें कॉलम में विस्तारित नहीं कर सकते हैं, तो आप बस इकाइयों को वापस कर सकते हैं। उदाहरण के लिए:

select new { CTLJCRJOB, CTLRFDSTM } 

आप इसे चपटा, तो आप अपने आप को मानचित्रण को लिखने के लिए होगा, लेकिन अभी भी बहुत तुच्छ हो जाएगा की जरूरत है।

+1

इस प्रकार के क्वेरी परिणाम को वापस करने वाले तरीके का रिटर्न प्रकार क्या होगा? और मैं इस क्वेरी परिणामों के रिकॉर्ड की संख्या कैसे गिन सकता हूं – rahularyansharma

+0

@rahularyansharma: वापसी का प्रकार निर्भर करता है। आपके मामले में, यह शायद सबसे अच्छा है कि आप परिणामों को 'toList()' सूची में संग्रहीत करते हैं और फिर आप 'गणना' संपत्ति का उपयोग कर सकते हैं। या यदि आप क्वेरी पर 'गणना() 'कहते हैं, तो यह' गणना का चयन करें 'करेगा। – surfasb

+0

आप CTLJCRJob और CTLRFDSTM को पकड़ने के लिए एक कस्टम क्लास बना सकते हैं ताकि आपको अनाम प्रकार लौटने से निपटने की आवश्यकता न हो। – ruffrey

4

आप खंड में उपयोग कर सकते हैं, लेकिन यह आपके लिए इसे फ़्लैट नहीं करेगा।

from CTLJCRJOB in CTRL_RUN_JOBs 
join CTLRFDSTM in CTRL_DATA_STREAMs 
on CTLJCRJOB.DATA_STREAM_ID equals CTLRFDSTM.DATA_STREAM_ID into ALLCOLUMNS 
from entry in ALLCOLUMNS 
select entry 
संबंधित मुद्दे