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 回答