English 中文(简体)
我应如何将这段林格写给实体问询?
原标题:How should I write this Linq to Entity query?
  • 时间:2009-09-13 07:17:16
  •  标签:

对林克实体来说,我是新鲜的,所以我不知道我做什么是最佳办法。

当我这样作时,就会发现一种错误,即它不承认GetItemSummaries的方法。 看上去看,这似乎是因为它与盘问中的一种习俗一样。

return (from c in _entity.Category
                from i in c.Items
                orderby c.Id, i.Id descending
                select new CategoryDto
                {
                    Id = c.Id,
                    Name =  c.Name,
                    Items = GetItemSummaries(c)
                }).ToList();

private IEnumerable<ItemSummary> GetItemSummaries(CategoryDto c)
{
    return (from i in c.Items
            select new ItemSummary
             {
               // Assignment stuff
             }).ToList();
}

我如何把这个问题合并成单一问题,因为我可以不说一种习俗?

我试图用实际的询问来取代这种方法,但随后却抱怨说,项目摘要没有得到承认,而不是抱怨方法名称没有得到承认。 是否有办法这样做? (较好的方式?)

最佳回答

你们应当能够做到以下几点:

    return (
            from c in _entity.Category
            orderby c.Id descending
            select new CategoryDto
            {
                Id = c.Id,
                Name =  c.Name,
                Items = (
                    from i in c.Items
                    order by i.Id descending
                    select new ItemSummary
                    {
                        // Assignment stuff
                    }
                )
            }).ToList();

它只是确保项目概要公开的问题,以便它能看到问题。

如果只是一个Dto,那么你可以使用一种通风,例如:

                    from i in c.Items
                    order by i.Id descending
                    select new
                    {
                        Id = i.Id,
                        Name = i.Name
                    }

这产生了一种带有伊德和名称的特性。 所有这一切都取决于贵方法典的需要:

问题回答

制作<代码>GetItemSummaries方法,在<代码>上采用一种推广方法。 类别:

private static IEnumerable<ItemSummary> GetItemSummaries(this Category c)

之后改为

select new Category
            {
                Id = c.Id,
                Name =  c.Name,
                Items = c.GetItemSummaries()
            }).ToList();

页: 1





相关问题
热门标签