के बीच अंतर कैसे प्राप्त करें मेरे पास इन दो डेटाटेबल्स हैं और मैं उनके बीच अंतर प्राप्त करना चाहता हूं। यहाँ एक उदाहरण है:दो डेटाटेबल्स
Table1
-------------------------
ID | Name
--------------------------
1 | A
2 | B
3 | C
--------------------------
Table2
-------------------------
ID | Name
--------------------------
1 | A
2 | B
--------------------------
मैं बस जो table1 में है और नहीं table2 में (table1-table2) डेटा के रूप में परिणाम चाहते
ResultTable
-------------------------
ID | Name
--------------------------
3 | C
--------------------------
मैं Linq के माध्यम से इन दो समान समाधान का उपयोग करने की कोशिश की, लेकिन यह हमेशा तालिका 1 लौटाता है और तालिका 1-तालिका 2 नहीं।
DataTable table1= ds.Tables["table1"];
DataTable table2= ds.Tables["table2"];
var diff= table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
दूसरा समाधान:
var dtOne = table1.AsEnumerable();
var dtTwo = table2.AsEnumerable();
var difference = dtOne.Except(dtTwo);
तो, जहां गलती है यहाँ पहली समाधान है? आपके सभी उत्तरों के लिए बहुत बहुत धन्यवाद। :)
चेक को गीला छोड़कर या नहीं, वे एक ही उदाहरण हैं। गीले नहीं हैं उनके संबंधित गुण समान हैं। आप अधिभार का उपयोग कर सकते हैं जो समानता कॉम्पैडर स्वीकार करता है या आप विभिन्न स्कीक + पुस्तकालयों में लागू किए गए एक्सटेंशन विधि ExceptBy() की जांच कर सकते हैं, जो कि जॉन स्कीट्स मोरलिंक (http://code.google.com/p/morelinq/) – Tormod
@ टॉर्मोड, लेकिन फिर अपने पहले समाधान में 'DataRowComparer' का उपयोग क्या है? यह वास्तविक कॉलम मानों की तुलना करने के लिए 'सार्वजनिक बूल बराबर (ट्रो बाएंरो, ट्रो राइटरो) 'ओवरराइड करता है। – hometoast
क्या आप दिखा सकते हैं कि आप अपने डेटाटेबल्स को कैसे पुनर्प्राप्त कर रहे हैं? क्या यह संभव है कि डेटा आपके अपेक्षा से अलग है? मैंने LINQPad में एक त्वरित नमूना किया और आपका पहला समाधान ठीक काम करता प्रतीत होता है। – goric