我正在开发一个带有Entity框架的MVC项目,我有一个这样的类别表:
public partial class Categories
{
public Categories()
{
this.Categories1 = new HashSet<Categories>();
}
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public Nullable<int> RelatedCategoryId { get; set; }
public virtual ICollection<Categories> Categories1 { get; set; } //Children
public virtual Categories Categories2 { get; set; } //Parent
}
当我用EF获取表格数据时,它会给我我想要的对象。有孩子的父母。
class Program
{
static Entities db = new Entities();
static void Main(string[] args)
{
List<Categories> categories = db.Categories.Where(item => item.RelatedId == null).ToList();
}
}
relatedId == null
部分,我得到没有父母的主要类别。
到目前为止没有问题。但我想转换categories
对象,该对象返回到另一个类:
public class NewCategories
{
public int Id { get; set; }
public string Name { get; set; }
private List<NewCategories> _subCategories;
public NewCategories()
{
_subCategories= new List<NewCategories>();
}
public List<NewCategories> SubCategories { get { return _subCategories; } }
}
我想要新的List<NewCategories> newCategories
对象。
我怎样才能做到这一点?
感谢。
答案 0 :(得分:1)
我认为你必须创建一个recursive
方法来将Categories
转换为NewCategories
,就像这样(我不确定它是否有效,但值得尝试):< / p>
public NewCategories ConvertToNewCategories(Categories cat){
NewCategories nc = new NewCategories {Id = cat.CategoryId, Name = cat.CategoryName};
nc.SubCategories.AddRange(cat.Categories1.Select(c=>ConvertToNewCategories(c)));
return nc;
}
//Then
List<NewCategories> categories = db.Categories.Where(item => item.RelatedId == null)
.Select(item=>ConvertToNewCategories(item))
.ToList();