4

これを実行しようとすると、エラーが発生します。

 Nullable<Guid> ng = corpid;

  var qry1 = from c in entities.Transactions
             join p in entities.Products on c.CorporationId equals (Nullable<Guid>) p.CorporationId
              where c.Branch == br &&
                    c.AccountNumber == accountnumber &&
                    c.CorporationId == ng
              orderby c.TransactionDate descending
              select new
              {
                Date = c.TransactionDate,
                RefNo = c.ReferenceNumber,
                DlvryAcct = c.DeliveryAccount,
                Desc = p.Description,
                GasQty = c.GasQuantity,
                Total = c.Amount,
                Balance = c.Balance
              };

これはメッセージです:

LINQ to Entities がメソッドを認識しない
'System.Linq.IQueryable`1[f__AnonymousType1`7[System.Nullable`1[System.DateTime],
  System.String,System.String,System.String,System.Nullable`1[System.Decimal],
  System.Nullable`1[System.Decimal],System.Nullable`1[System.Decimal]]]
Reverse[f__AnonymousType1`7](System.Linq.IQueryable`1[f__AnonymousType1`7[System.Nullable`1[System.DateTime],
  System.String,System.String,System.String,System.Nullable`1[System.Decimal],
  System.Nullable`1[System.Decimal],System.Nullable`1[System.Decimal]]])'
メソッドであり、このメソッドは store 式に変換できません。

nullable guid へのキャストがここで機能しているとは思わない。はc.CorporationIdnull 可能な GUID ですが、p.corporationid単なる GUID です。

助言がありますか?

4

3 に答える 3

3

代わりにキャストと同等化を試みc.CorporationIdましng.Valueたか?:

 Nullable<Guid> ng = corpid;

  var qry1 = from c in entities.Transactions
             join p in entities.Products on c.CorporationId equals p.CorporationId
              where c.Branch == br &&
                    c.AccountNumber == accountnumber &&
                    c.CorporationId == ng.Value
              orderby c.TransactionDate descending
              select new
              {
                Date = c.TransactionDate,
                RefNo = c.ReferenceNumber,
                DlvryAcct = c.DeliveryAccount,
                Desc = p.Description,
                GasQty = c.GasQuantity,
                Total = c.Amount,
                Balance = c.Balance
              };
于 2012-12-21T20:04:17.200 に答える
0

select句の匿名コンストラクターについて不平を言っているようです。 c.TransactioDatec.GasQuantityc.Amountおよびc.Balanceすべて Nullable のように見えます。これらのフィールドに問題があるかどうかを確認するために、このようなことを試してください。

Nullable<Guid> ng = corpid;

var qry1 = from c in entities.Transactions
           join p in entities.Products on c.CorporationId equals (Nullable<Guid>) p.CorporationId
           where c.Branch == br &&
                c.AccountNumber == accountnumber &&
                c.CorporationId == ng.Value
           orderby c.TransactionDate descending
           select new
           {
               Date = c.TransactionDate.Value,
               RefNo = c.ReferenceNumber,
               DlvryAcct = c.DeliveryAccount,
               Desc = p.Description,
               GasQty = c.GasQuantity.Value,
               Total = c.Amount.Value,
               Balance = c.Balance.Value
           };
于 2012-12-21T20:26:43.177 に答える