для потомков ...
List<Category> categories
должно быть в порядке. Свойства выставляются через что-то вроде:
categories[0].TempID
Вы можете запустить LINQ для коллекции:
var catIDs = from cat in categories
where cat.ID.HasValue == true
select cat;
UPDATE_3:
Хорошо, теперь я понимаю - вы получаете объект, который выглядит следующим образом:
public Guid TempID { get; set; }
public Nullable<int> ID { get; set; }
public bool Published { get; set; }
public int CategoryLevel { get; set; }
public int CategoryOrder { get; set; }
public DateTime UpdatedDate { get; set; }
public Nullable<int> RefParent { get; set; }
public bool GotChildren { get; set; }
... а вам нужно уметь добавлять коллекции дочерних категорий?
Если вы не можете наследовать класс, я бы использовал объект следующим образом:
class MyCategory
{
// add fields for respective Category properties
// or just the following
Category category;
List<Category> subCategories;
MyCategory (Category category)
{
this.category = category;
if (this.category.GotChildren)
{
// query TempIDs, Level, etc. from collection of Categories
// and assign to subCategories collection
}
}
// add property getters/setters as needed
public List<Category> SubCategories
{ get { return subCategories; } }
}
... внешне, звоните:
bool TryGetSubCategories (MyCategory myCategory, out DataList myDataList)
{
if (myCategory.GotChildren)
{myDataList.DataSource = myCategory.SubCategories;}
return myCategory.GotChildren;
}
Обновлен метод для работы аналогично Dictionary.TryGetValue ();
UPDATE_2:
Вам потребуется добавить свойство коллекции (ICollection
, List<T>
и т. Д.) К вашему типу:
public Guid TempID { get; set; }
public Nullable<int> ID { get; set; }
public bool Published { get; set; }
public int CategoryLevel { get; set; }
public int CategoryOrder { get; set; }
public DateTime UpdatedDate { get; set; }
public Nullable<int> RefParent { get; set; }
public bool GotChildren { get; set; }
public List<Categories> SubCategories {get; set;} // add this
Это добавит неограниченную глубину. Я не понимаю, почему не может использовать DataList в качестве типа данных SubItems.
UPDATE:
После более тщательного изучения класса DataList вы должны использовать ICollection
в качестве источника данных. MSDN показывает, что List<T>
наследуется от ICollection
& ICollection<T>
. IList
наследуется от ICollection
; в то время как IList<T>
наследуется от ICollection<T>
.
MSDN также имеет образец .