2

必要なすべてのデータを取得し、それをデータ転送オブジェクトに統合する LINQ クエリがあります。DTO のメンバーの 1 つ (char) を char 値に設定するとクエリ例外がスローされることを除いて、すべて正常に動作します...

タイプ 'System.ServiceModel.FaultException' の未処理の例外が mscorlib.dll で発生しました

タイプ 'System.Char' の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

以下の単純化されたクエリを参照してください。

var result = (from c in db.Foster_Carers
              where c.foster_carer_id == id
              join fc in db.Individual_Carers on c.first_carer_id equals fc.individual_carer_id
              select new FosterCarerPersonalInfoDTO
              {
                  carer_title = fc.title,
                  carer_forenames = fc.forename,
                  carer_surname = fc.surname,                                
                  carer_gender = 'm'
              }).SingleOrDefault();

性別を「m」に設定しても機能しません。構文的には問題ありませんが、クエリが実行されたときだけではありません! 問題は何ですか?

4

3 に答える 3

0

私は同じことに遭遇し、中間値を保存し、Linq クエリの外部で変換を行う必要がありました。

var intermediateResult = (from c in db.Foster_Carers
          where c.foster_carer_id == id
          join fc in db.Individual_Carers on c.first_carer_id equals fc.individual_carer_id
          select new 
          {
              oldResult = new FosterCarerPersonalInfoDTO
              {
                  carer_title = fc.title,
                  carer_forenames = fc.forename,
                  carer_surname = fc.surname,                                
              }
          ,   forConversion = new
              {
                  carer_gender = "m"
              }
          }).SingleOrDefault();

intermediateResult.oldResult.carer_gender = intermediateResult.forConversion.carer_gender[0];

var result = intermediateResult.oldResult;
于 2014-09-26T12:45:54.100 に答える