2016-08-03 3 views
0

私は、LINQを経由して私のデータベースからimage列を選択し、q3変換できません型「System.Linq.IQueryable <System.Data.Linq.Binary>

------------------------------- 
|   table : admin  | 
------------------------------- 
| username | password | image | 
------------------------------- 

クエリにそれを保存しようとしているのバイトを:

var q3 = alnq.tbl_Admins.Where(c => c.fld_UserName == userName).Select(c => c.fld_Image); 

私はバイトの配列にこのクエリを変換したい場合は、私はエラーを取得:

byte [] DbImageByte = q3.ToArray(); 

エラー:(fld_UserNameが一意でない場合またはそれ以上)あなたのコードで

Cannot implicitly convert type 'System.Data.Linq.Binary[]' to 'byte[]'

+0

どのタイプが 'fld_Image'ですか? –

+0

varbinary(Max) – user3319756

+0

.select()の後に.FirstOrDefault()を追加してみてください。 –

答えて

0

のようなものを試してみてくださいでした。 私たちは質問をする必要があるのでLinqのFirstOrDefault()メソッドで1つの行だけを返してください。

あなたの場合はクエリの後にFirstOrDefault()にあるので、結果は行セットではなく1行だけになります。

0

.Select(c => c.fld_Image)はあなたに1つのアイテムでコレクションを与えます。 FirstOrDefault()を使用して、最初の項目をリストから削除するだけです。

使用この:

var q3 = alnq.tbl_Admins.Where(c => c.fld_UserName == userName).Select(c => c.fld_Image).FirstOrDefault(); 
+0

@GiladGreenはい、「バイナリ[]」から「バイト[]」へのキャストエラーがあります。最初の要素を取った後、それは 'Binary'から' byte [] 'になります。これは有効なキャストでなければなりません。 – sachin

0

すべてLing.binaryは、私はQ3がIEnumarbleリストであると思ったあなたは、配列やリスト

Binary[] binary = q3.ToArray(); 
List<byte[]> byteArray = new List<byte[]>(); 
foreach(var b in binary){ 
    byteArray.Add(b.ToArray()); 
} 
0

に保管する必要があるバイト配列を含んでいます。私たちはその私たちの主キーが、それはそれは返すために一つだけの行を持つことができる条件を理解していないかどうかをどこで選ぶ書くたび

あなたは、LINQの

var q3 = alnq.tbl_Admins.Where(c => c.fld_UserName == userName).Select(c => c.fld_Image).FirstOrDefault(); 
byte[] DbImageByte = q3.ToArray(); 
関連する問題