0

VS2012 と EF5 を使用して、結果を「FullList」に変換しようとしています。

public class FullList {
    public int ListID {get; set;}
    public string ListName {get; set;}
    public List<ListItems> ListItems {get; set;}
}

public class ListItems {
    public int ItemID {get; set;}
    public string ItemName {get; set;}
}

そして、「LINQ to Entitiesはメソッドを認識しません... blahblahblah .....そして、このメソッドはストア式に変換できません」という迷惑なエラーを生成している私のクエリです。

List<FullList> x = (from l in entities.Lists
                   select new FullList
                   {
                       ListID = l.ListID,
                       ListName = l.ListName,
                       ListItems = l.ListItems.Select(li => new ListItems
                                   {
                                       ItemID = li.ItemID,
                                       ItemName = li.ItemName
                                   }).ToList()
                    }).ToList();

それはうまくコンパイルされ、私にはうまくいくように見えますが、サイコロはありません...何かアイデアはありますか? 前もって感謝します

4

1 に答える 1

1

残念ながら、EFはブロック選択のスコープ内の値の変更をサポートしていません。したがって、クエリを作成して実行し、マップされたオブジェクトのリスト形式で結果を取得し、その後、ViewModel、DTOなどへの変換を実行できます...次のようなものを試してください。

List<FullList> x = (from l in entities.Lists
                   select l) // create your query
                   .ToList() // execute query and get the List<Entity>
                   .Select(l => new FullList // customize your result (convert to List<FullList>)
                                {
                                  ListID = l.ListID,
                                  ListName = l.ListName,
                                  ListItems = l.ListItems.Select(li => new ListItems
                                       {
                                           ItemID = li.ItemID,
                                           ItemName = li.ItemName
                                       }).ToList()
                                }).ToList();
于 2013-01-14T02:03:44.797 に答える