良い一日の方法を認識しない、System.Linq.Select方法エラー:エンティティへのLINQは
私のコードは、実行時エラーが発生し、私はこの問題を解決するかどうかはわかりません。どんな助けもありがとう。
私たちのコードは、「オファー」のリストを渡すことによって、以下の2番目のConvertメソッドを呼び出しています。オファーは、EDMXモデルのオブジェクトです。最初のConvertメソッドはオブジェクトを取得し、それをDTOクラスに変換して戻します。
プログラムを実行しているとき、私は次のようなエラーが発生します。
LINQ to Entities does not recognize the method '...Domain.Holdings.OfferDto Convert(...Repository.Offer, System.Nullable`1[System.Int32])' method, and this method cannot be translated into a store expression.
次のようにコードが見えます:
public class OfferDtoMapping
{
public static OfferDto Convert(Offer offer, int? participantId)
{
if (offer == null)
throw new ArgumentException("The Offer object supplied for conversion cannot be null");
var unitCost = offer.UnitCost;
if (offer.Trust.Company.AllowInterDiv && participantId.HasValue)
{
Assign another value to unitCost...
}
var output = new OfferDto
{
Assign the offer properties to the OfferDto properties...
};
return output;
}
public static IList<OfferDto> Convert(IQueryable<Offer> offerList)
{
return offerList == null ? new List<OfferDto>() : offerList.Select(ol => Convert(ol, null)).ToList();
}
}
エラーは、この行で発生します
return offerList == null ? new List<OfferDto>() : offerList.Select(ol => Convert(ol, null)).ToList();
私はエラーは、私が2inpを取る方法でofferListを投影しているという事実と関係していると思われるutパラメータ。私たちはNULLの代わりに0を渡そうとしました(当初はそれが問題だと思っていたからです)。しかし、同様のエラーメッセージが表示されます。当社のソリューション全体の一貫性を維持するために
我々はSelectメソッドを使用しての代わりに、foreach文でこれを置き換えておきたいです。
現在の状況でSelectメソッドを使用する方法はありますか?
ありがとうございます。エンティティへ
優れた、あなたに感謝して、このような迅速な回答をありがとうございました。私はそれをテストし、それは動作します。 – Matei
'ToList()'の代わりに 'AsEnumerable()'を使うこともできます。これは、リストを2回割り当てる必要がないため、より効率的です。 – svick