2012-12-25 14 views
11

मैं डेटाबेस तालिका में बाइट्स संग्रहीत कर रहा हूं। जब मैं इसे लिंक 2 वर्ग के साथ पुनर्प्राप्त करता हूं तो मुझे वापसी का प्रकार system.data.linq.Binary मिलता है।system.data.linq.binary को बाइट में परिवर्तित करें []

मैं system.data.linq.binary को बाइट सरणी (byte[]) में कनवर्ट करने में सक्षम नहीं हूं।

मैं इसे कैसे परिवर्तित करूं?

///my datacontext 

var db = new db(); 

//key is an value from user 

var img = from i in db.images 
      where i.id == key 
      select i.data; 

i.datalinq.binary में मैं इसे byte[] में रहना चाहता हूँ है।

मैंने (byte[])img के साथ प्रयास किया लेकिन यह काम नहीं किया।

+0

आपने 'बाइनरी' से 'बाइट' कैसे बदल दिया? – spajce

उत्तर

0

आप मेमोरीस्ट्रीम को आजमा सकते हैं। मैंने अपनी प्रोजेक्ट में एक फ़ंक्शन को बाइट सरणी में बदलने के लिए निम्न कार्य किया है:

public static byte[] Image2ByteArr(string filename) 
    {    
     Bitmap bm = new Bitmap(getPath(filename)); 
     MemoryStream ms = new MemoryStream(); 
     bm.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
     return ms.ToArray(); 
    } 

आशा है कि आपके लिए सहायक!

+0

nope dude dosent wrk मैं मान को "पुनर्प्राप्त करने" के लिए linq का उपयोग कर रहा हूं और इसे बाइट सरणी रूपांतरण में पढ़ सकता हूं System.Data.Linq.Binary से System.byte [] – user1797079

+0

यह उत्तर उपयोगी नहीं है - प्रश्न पूछता है 'System.Data.Linq.Bin ary' को 'बाइट []' में परिवर्तित करने के बारे में, लेकिन यह उदाहरण एक फ़ाइल पथ को 'बाइटमैप' के साथ 'बाइटमैप' के साथ परिवर्तित करता है। –

+0

उत्तर ओपी के सवाल से संबंधित नहीं है। उत्तर में लिंकक। बाइनरी प्रकार का कोई संदर्भ नहीं है, जो ओपी की तलाश में 50% है। उत्तर पोस्ट करने से पहले कृपया प्रश्न को ठीक से पढ़ें। – Bertie

24

क्या आपने पर i.data पर कॉल करने का प्रयास किया है?

var img = from i in db.images 
     where i.id == key 
     select i.data.ToArray(); 

System.Data.Linq.Binary सिर्फ इतना है कि उद्देश्य के लिए एक ToArray विधि है।

+0

या यह काम करने वाला व्यक्ति है, यह सिस्टम लौटाता है। डेटा.लिंक। बाइनरी [] बाइनरी की सरणी यह ​​है :( – user1797079

+0

प्लस हम इसे 'var img = (i db.images में i iid = = कुंजी i.data का चयन करें) .ToArray(); ' – user1797079

+1

'ToArray()' कॉल' i.data' पर होना चाहिए। आप कोष्ठक के बाद कॉल डाल रहे हैं। यह आपको 'IENumerable' 'और फिर आप उस' IENumerable' पर 'ToArray' को कॉल करते हैं। मुझे लगता है कि उस कुंजी के साथ केवल एक छवि हो सकती है। फिर ऐसा लगता है कि आप' var img = (मैं db.images में जहां i.id == कुंजी i.data का चयन करें)। सबसे पहले()। ToArray(); 'शायद आप पहले() ' –

5

शायद बहुत देर अब तक लेकिन मदद मिल सकती है दूसरों :)

//testTable PK:ID, binaryData :binary(32) 

public void insertDummyData() 
{ 
    DBML.testTable v = new DBML.testTable(); 
    v.ID = 1; 

    System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
    v.binaryData = new System.Data.Linq.Binary(encoding.GetBytes("11111111000000001111111100000000"));                  

    db.testTable.InsertOnSubmit(v); 
    db.SubmitChanges(); 
} 

वरना, .dbml फ़ाइल, खुले गुणों से बाइनरी मैदान पर क्लिक करें और फिर के रूप में पाया byte[] को बाइनरी से क्षेत्र प्रकार बदलने here

0
(byte[])linqBinaryField.ToArray() 
+1

नहीं जुस उत्तर देने के लिए, आप थोड़ा स्पष्टीकरण जोड़ सकते हैं जो ओपी और भविष्य के पाठकों के लिए बेहतर समाधान को समझता है। –

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