2015-03-09 10 views
5

मैं एंटिटी को LINQ का उपयोग कर रहा है और हो रही त्रुटिविधि एक दुकान एक्सप्रेशन सिंटैक्स त्रुटि

विधि एक दुकान अभिव्यक्ति

var myStrings = from keys in keyTable 
             join values in valuesTable 
              on keys.ID equals values.FK_TableKey 
             select new NewModel 
             { 
              Value = values.Value,           
              Hash = CalculateHash(string.Format("{0}_{1}", keys.Key, keys.Context)) 
             }; 

में अनुवाद नहीं किया जा सकता है में अनुवाद नहीं किया जा सकता है // मैंने कोशिश की LINQ सिंटैक्स में नीचे

// हैश मान की गणना कैसे करें जो LINQ से Entity पर काम करेगा?

// विधि

public string CalculateHash(string input) 
     { 
      if (input == null) 
       return null; 
//calculate MD5 hash 
      var md5 = System.Security.Cryptography.MD5.Create(); 
      byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input); 
      byte[] hash = md5.ComputeHash(inputBytes); 

      var sb = new StringBuilder(); 
      foreach (byte t in hash) 
       sb.Append(t.ToString("P2")); 

      return sb.ToString(); 
     } 
+1

यह संभव नहीं है कि आपको हैश की गणना करने से पहले ToList() को कॉल करना होगा। –

+0

@ जेनिशराबादिया क्या यह नीचे दिए गए उत्तर में दिखाया गया है? कृपया विस्तार से बताएं ? – Neo

उत्तर

8

के बाद से हैश मान नेट पक्ष पर गणना की जानी चाहिए, आप भाग है कि "कच्चे डेटा" का उत्पादन के बाद AsEnumerable() कॉल जोड़ सकते हैं, और उसके बाद बाकी की गणना बाहर अपने आरडीबीएमएस, इस तरह:

var rawStrings = from keys in keyTable 
       join values in valuesTable 
       on keys.ID equals values.FK_TableKey 
       select new { 
        Value = values.Value,           
        keys.Key, 
        keys.Context 
       }; 
var myStrings = rawStrings.AsEnumerable().Select(t => new NewModel { 
    Value = t.Value, 
    Hash = CalculateHash(string.Format("{0}_{1}", t.Key, t.Context)) 
}); 

पहली क्वेरी आरडीबीएमएस पक्ष पर चलाता है, और कुंजी और कंप्यूटिंग Hash के लिए संदर्भ पैदा करता है। वांछित आउटपुट की गणना करने के लिए दूसरी क्वेरी कच्चे डेटा का उपयोग करती है।

+0

'myStrings' में वर्तमान संदर्भ में 'वैल्यू' मौजूद नहीं है :( – Neo

+0

आह मेरे बुरे खेद और धन्यवाद, लेकिन मेरे मॉडल के बारे में एक और सवाल क्या है? जैसा कि मैंने प्रश्न' न्यूमोडेल 'को बांधने की कोशिश की क्योंकि मैंने इस मॉडल क्लास को लिया है और गुण इसके अंदर हैं। – Neo

+0

मैंने मॉडल के बाद नया दिया लेकिन त्रुटि प्राप्त करने की कोशिश की: 'स्ट्रिंग' ए। वैल्यू, अमान्य प्रारंभकर्ता सदस्य डीसीलेटर ' – Neo

संबंधित मुद्दे