我正在尝试将对象集合绑定到Telerik TreeView控件。我的对象结构看起来像是:
Item 1.1
- Item 1.1.1
- Item 1.2.1
- Item 1.2.2
- Item 1.1.2
...
Item n.1
- Item n.1.1
- Item n.2.1
- Item n.3.1
所有这些对象都有一个共同的bool属性,即isBindable。我想将此集合绑定到我的TreeView控件,但控件应该只绑定对象,如果其属性isBindable = true。
我不想循环遍历整个集合,并且在对控件执行ItemSource之前,基于isBindable逐个删除。
更好的想法是如何实现这一点,也许是LINQ?
谢谢, 巴斯卡尔
答案 0 :(得分:0)
您可以使用Where
过滤商品:
collection.Where(x => x.isBindable);
答案 1 :(得分:0)
您可以尝试使用递归来实现此目的。你需要一个foreach
循环。请参阅以下方法。只需将您的集合传递给此方法,看看它是否被过滤。
private List<Item> Filter(List<Item> itemList)
{
List<Item> filteredItems = (from c in itemList
where c.IsBindable == true
select c).ToList();
foreach (Item item in filteredItems)
{
if (item.Item != null)
item.Item = Filter(item.Item);
}
return filteredItems;
}
class Item
{
public List<Item> Item { get; set; }
public bool IsBindable { get; set; }
public Item()
{
IsBindable = false;
}
}
答案 2 :(得分:0)
您可以将树形成一个线性序列并检查您的状况
collection.SelectMany(item=> item.SubItems).Where(subitem)