मेरे पास निम्न कोड है जो dataTable1
और dataTable2
को दो सरल एसक्यूएल प्रश्नों के साथ भरता है, dataTableSqlJoined
एक ही टेबल से भरा हुआ है लेकिन एक साथ जुड़ गया है।LINQ के साथ जुड़े दो डेटाटेबल्स से संयुक्त डेटाटेबल बनाएं। सी #
मैं एक LINQ क्वेरी लिखने की कोशिश कर रहा हूं जो dataTableLinqJoined
बना सकता है जैसे कि यह SQL का उपयोग करके बनाया गया था। नीचे दिए गए मेरे उदाहरण में, यह केवल डेटाटेबल 1 से मान देता है।
मेरी समस्या यह है कि linq क्वेरी के SELECT
में क्या समस्या है। मैं DataRows दोनों से सभी कॉलम युक्त एक नया DataRow कैसे बना सकता हूं। मैं रनटाइम तक क्वेरी के सटीक कॉलम नाम/स्कीमा को नहीं जानूंगा।
sqlCommand = new SqlCommand("SELECT ID, A, B FROM Table1", sqlConnection, sqlTransaction);
sqlAdapter = new SqlDataAdapter(sqlCommand);
DataTable dataTable1 = new DataTable();
sqlAdapter.Fill(dataTable1);
sqlCommand = new SqlCommand("SELECT ID, C, D FROM Table2", sqlConnection, sqlTransaction);
sqlAdapter = new SqlDataAdapter(sqlCommand);
DataTable dataTable2 = new DataTable();
sqlAdapter.Fill(dataTable2);
sqlCommand = new SqlCommand("SELECT Table1.ID, A, B, Table2.ID, C, D FROM Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID", sqlConnection, sqlTransaction);
sqlAdapter = new SqlDataAdapter(sqlCommand);
DataTable dataTableSqlJoined = new DataTable();
sqlAdapter.Fill(dataTableSqlJoined);
var dataRows =
from
dataRows1 in dataTable1.AsEnumerable()
join
dataRows2 in dataTable2.AsEnumerable()
on
dataRows1.Field<int>("ID") equals dataRows2.Field<int>("ID")
select
dataRows1; // + dataRows2;
DataTable dataTableLinqJoined = dataRows.CopyToDataTable();
कुछ और पृष्ठभूमि के लिए, संयुक्त क्वेरी बहुत डीबी गहन है और प्रदर्शन के मुद्दों का कारण बन रही है। पहली क्वेरी द्वारा लौटाया गया डेटा काफी स्थिर है और इसे अत्यधिक कैश किया जा सकता है। दूसरी क्वेरी द्वारा लौटाया गया डेटा लगातार बदलता है लेकिन दौड़ने के लिए तेज़ होता है और इसलिए उसे कैश करने की आवश्यकता नहीं होती है। संयुक्त डेटाटेबल के पारित होने पर बहुत सारे कोड निर्भर हैं और इसलिए डेटा को अलग प्रारूप में पास करने में कई व्यवहार्य विकल्प उपलब्ध नहीं हैं।
मैं थोड़ा सा उत्सुक हूं कि एक तरफ, आप इन प्रश्नों के प्रदर्शन को बिल्कुल जानते हैं, लेकिन दूसरी तरफ, आप रनटाइम तक तालिका संरचना को नहीं जानते हैं। –
प्रश्न गतिशील रूप से बनाए गए हैं। –