3

LINQ to Entities はメソッドを認識しません...

みんな、ごめんなさい。この問題はすでに何百人もの人々によって提起されていることを認識しています. 残念ながら、私はすでに精神的な限界に達しており、私が見つけた答えのどれも私のケースに一致するようには見えませんでした.

これが私がやろうとしたことです:

var apiMenuItems = menuItems.Select(item => new ApiMenuItem()
            {
                ID = item.ID,
                Name = item.Name.GetLocalizedString("en")
            });

ご覧のとおり、タイプ ApiMenuItem (非常に単純なクラス) のいくつかの新しいオブジェクトを作成したいと考えています。

 public class ApiMenuItem
 {
    public Guid ID { get; set; }
    public string Name { get; set; }
 }

私の知る限り、Entity Framework は LINQ ステートメントを純粋な SQL に変換する必要があります。これは、私の GetLocalizedString(string languageCode) 拡張メソッドでは機能しません。

この問題を修正するコード、または回避するコードを教えてください。私は本当に自分で解決策を思い付くことができません:-(

助けてくれてどうもありがとう!

4

1 に答える 1

2

ToList()ApiMenuItem を選択する前に、データベースから項目を取得するために使用すると機能します。

var apiMenuItems = menuItems.ToList().Select(item => new ApiMenuItem()
{
    ID = item.ID,
    Name = item.Name.GetLocalizedString("en")
});

ただし、パフォーマンス上の理由から、次のようにする必要があります。

var apiMenuItems = menuItems.Select(item => new 
{
    //What to select from db
    ID = item.ID, 
    Name = item.Name
}).ToList() //Fetch from db
.Select(item => new ApiMenuItem()
{
    //Select with code
    ID = item.ID,
    Name = item.Name.GetLocalizedString("en")
});
于 2013-01-17T08:46:27.867 に答える