我是Linq to Entity的新手,所以我不知道我在做什么是最好的方法。我应该如何将此Linq写入实体查询?
当我做这样的查询它编译,但引发错误,它不能识别方法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();
}
由于我无法调用自定义方法,我该如何将它组合成单个查询?
我试着用实际的查询替换方法调用,但后来抱怨ItemSummary不被识别,而是抱怨方法名不被识别。有没有办法做到这一点? (或者更好的办法?)
对不起,这只是一个学习应用程序,所以我的namings是一种懒惰。我返回的类别是一个从实体对象创建的Dto对象,我不认为我可以在Dto类上创建扩展方法并让它按照我的需要进行操作。 – Brandon 2009-09-13 07:36:17
为什么不呢?你可以在任何对象上放置扩展方法 - 只要你的“Category”对象包含你在GetItemSummaries方法中需要的所有信息 - 没问题。 – 2009-09-13 12:51:19