शायद कुछ लौटने के लिए, लेकिन मैं सिर्फ यह नहीं देख सकते हैं ...समान (?) C# और VB.NET LINQ प्रश्नों अलग परिणाम वास्तव में आसान
मैं LINQ में एक एमएस एक्सेस क्वेरी नकल कर रहा हूँ। मैंने इसे परीक्षण करने के लिए पहले सी # में लिखा था, क्योंकि मैं सी # पसंद करता हूं, फिर मैंने इसे वीबी.Net वाक्यविन्यास में अनुवादित किया। जहां तक मैं दो प्रश्नों को बता सकता हूं, समान है, लेकिन सी # क्वेरी सही परिणाम देता है, VB.NET एक शून्य परिणाम देता है।
क्या कोई देख सकता है कि अंतर कहां हो सकता है?
सी # क्वेरी:
var table1 = dc.MainTable.Where(o => o.Year == 423).ToList().Select(o => new
{
Key_ID = o.Key_ID.Value,
CropID = o.CropID.Value,
GroupID = o.GroupID.Value,
Surface1 = o.Surface1.Value,
Surface2 = o.Surface2.Value
});
var table2 = dc.OtherTable.Where(o => o.Year == 423).ToList().Select(o => new
{
Key_ID = o.Key_ID.Value,
CropID = int.Parse(o.SAKU_CD),
GroupID = int.Parse(o.SAN_DAN_NO),
Surface1 = Convert.ToDouble(o.KEIHAN_MEN.Value),
Surface2 = Convert.ToDouble(o.SAKU_MEN.Value)
});
var output = table1.Join(table2, t1 => new
{
t1.Key_ID,
t1.CropID,
t1.GroupID,
t1.Surface1,
t1.Surface2
},
t2 => new
{
t2.Key_ID,
t2.CropID,
t2.GroupID,
t2.Surface1,
t2.Surface2
}, (t1, t2) => new OutputDataType()
{
Key_ID = t1.Key_ID,
Year = 423
}).ToList();
VB.NET क्वेरी:
Dim table1 = MainTable.Where(Function(o) o.Year.Value = 423).ToList().Select(Function(o) New With
{
.Key_ID = o.Key_ID.Value,
.CropID = o.CropID.Value,
.GroupID = o.GroupID.Value,
.Surface1 = o.Surface1.Value,
.Surface2 = o.Surface2.Value
}).ToList()
Dim table2 = OtherTable.Where(Function(o) o.Year.Value = 423).ToList().Select(Function(o) New With
{
.Key_ID = o.Key_ID.Value,
.CropID = Convert.ToInt32(o.SAKU_CD),
.GroupID = Convert.ToInt32(o.SAN_DAN_NO),
.Surface1 = Convert.ToDouble(o.KEIHAN_MEN.Value),
.Surface2 = Convert.ToDouble(o.SAKU_MEN.Value)
}).ToList()
Dim output = table1.Join(table2, Function(t1) New With
{
t1.Key_ID,
t1.CropID,
t1.GroupID,
t1.Surface1,
t1.Surface2
}, Function(t2) New With
{
t2.Key_ID,
t2.CropID,
t2.GroupID,
t2.Surface1,
t2.Surface2
}, Function(t1, t2) New OutputDataType With {.Key_ID = t1.Key_ID, .Year = 423}).ToList()
दोनों सी # और VB.Net table1
और table2
में ही कर रहे हैं, तो यह Join
जो विफल रहता है होना चाहिए ।
संपादित
मैं सिर्फ Join
VB.Net में वाक्य रचना क्वेरी करने के लिए, इस तरह बदल दिया है:
Dim output = From t1 In MainTable
Join t2 In OtherTable
On t1.Key_ID Equals t2.Key_ID And t1.GroupID Equals t2.GroupID And t1.CropID Equals t2.CropID And t1.Surface1 Equals t2.Surface1 And t1.Surface2 Equals t2.Surface2
Select New OutputDataTypeData With {.Key_ID = t1.Key_ID, .Year = 423}
कौन सा सही परिणाम देता है। लेकिन मुझे वास्तव में यह नहीं पता कि यह विस्तार विधि Join
वाक्यविन्यास से अलग कैसे है?
धन्यवाद !! मैं पहले से ही 'कुंजी' कीवर्ड द्वारा पकड़ा गया है। मुझे लगता है कि मैं आपके स्पष्टीकरण को प्रिंट कर रहा हूं और इसे अपने पीसी पर स्टिकर कर रहा हूं, इसलिए मैं अब और इसके बारे में नहीं भूलता। बहुत बहुत धन्यवाद! –