2012-05-05 11 views
3
System.Linq.IQueryable<CustomerProfile> query = 
    from usr in context.customer_profiles 
    where usr.cust_email == LoginID 
    select new CustomerProfile 
    { 
     NAME = usr.cust_name, 
     CONTACT = usr.cust_contact, 
     EMAILID = usr.cust_email, 
     LOCATION = usr.cust_location, 
     SERVICELOCATION=usr.cust_service_location, 
     FAXNO=usr.cust_fax_no, 
     FIRMNAME = usr.cust_firm_name, 
     FIRMADDRESS = usr.cust_firm_address, 
     DATEESTABLISHED = Convert.ToDateTime(((DateTime?)usr.date_of_established)), 
     SIGNATURE = usr.cust_signature, 
     LOGO = usr.logo, 
    }; 

次の行では、「指定されたキャストが無効です」という問題が発生しました。どうすれば修正できますか?Asp.net linqクエリ

return query.ToList().FirstOrDefault(); 
+2

内部例外またはStackTraceのような例外の詳細を教えてもらえますか? –

+0

'usr.date_of_established'の種類は何ですか?とにかく、明示的キャストに続いて変換が冗長です。さらに、このクエリによってデータベースから_all_ 'customer_profiles'を取り出します。 ToList()は必要ありません。私は例外がdatetimeと関係があると確信しています。あなたはその行を省略するとそれはまだ起こりますか? –

+2

別の質問:このコードがすべて含まれているメソッドのシグネチャは何ですか。何か他のものを返すことを期待していますか? –

答えて

0

お客様のメールアドレスとクエリのログインIDを比較しています。私はこれが鋳造の問題を引き起こすだろうと仮定します。そうでなければ、あなたが望む正しい結果を返さないでしょう。

そして、これを試してみて、クエリを返すかなりのIQueryable

+1

これは、_Operator '=='のようなコンパイラエラーの原因になる可能性があります型 '文字列'と 'int'_のオペランドに適用することはできません。 –

0

より暗黙のキャスト(VAR)を使用します。フォーマットにごめんね、それは私にブルースを与えていた

 CustomerProfile query = 
     (from usr in context.customer_profiles 
      where usr.cust_email == LoginID 
      select new 
      { 
       NAME = usr.cust_name, 
       CONTACT = usr.cust_contact, 
       EMAILID = usr.cust_email, 
       LOCATION = usr.cust_location, 
       SERVICELOCATION = usr.cust_service_location, 
       FAXNO = usr.cust_fax_no, 
       FIRMNAME = usr.cust_firm_name, 
       FIRMADDRESS = usr.cust_firm_address, 
       DATEESTABLISHED = Convert.ToDateTime(((DateTime?)usr.date_of_established)), 
       SIGNATURE = usr.cust_signature, 
       LOGO = usr.logo, 
      }).FirstOrDefault();