我有一个拥有类别的类。使用linq添加项目列表
public class CategoryDto
{
public int Id { get; set; }
public int PortfolioId { get; set; }
public string Description { get; set; }
public List<SubCategoryDto> SubCategories { get; set; }
public CategoryDto()
{
SubCategories = new List<SubCategoryDto>();
}
}
它里面有一个列表,这是其他子类别类的列表:
public class SubCategoryDto
{
public int Id { get; set; }
public int CategoryId { get; set; }
public CategoryDto Category { get; set; }
public string Description { get; set; }
}
我然后填充这个项目,但我得到一个“PortfolioId”列表基地。
var cats = (from p in Context.transaction_category
where p.account_portfolio_id == portfolioId
&& p.deleted == null
select new CategoryDto
{
Id = p.id,
Description = p.description,
PortfolioId = p.account_portfolio_id
}).ToList();
Categories表具有SubCategories的外键。每个类别都有0:n个子类别。所以,实体框架模型有一个Context.transaction_category.transaction_sub_categories
集合。
因此,现在我所做的是,通过上面列表中的类别进行foreach,并填充子类别。
有没有办法在同一个链接语句中做到这一点? Categories对象有一个List列表。它可以在上面的Linq声明中完成吗?
编辑: 这是修复的尝试,作为推荐,但呈现的错误:
var cats = (from p in Context.transaction_category
where p.account_portfolio_id == portfolioId
&& p.deleted == null
select new CategoryDto
{
Id = p.id,
Description = p.description,
PortfolioId = p.account_portfolio_id,
SubCategories = (from s in Context.transaction_sub_category where s.transaction_category_id == p.id
&& s.deleted == null
select new SubCategoryDto
{
Id = s.id,
Description = s.description,
CategoryId = s.transaction_category_id
}).ToList()
}).ToList();
LINQ to Entities does not recognize the method 'System.Collections.Generic.List
1[Objects.SubCategoryDto] ToList[SubCategoryDto](System.Collections.Generic.IEnumerable
1[Objects.SubCategoryDto])' method, and this method cannot be translated into a store expression.
哪里是你的子类别?你能分享你的子类吗? –
添加了要发布的子类。 – Craig