-4

我有一个包含 3 个字段的 C# 列表IDNameParentID. 我将它绑定到树视图。现在我还有一个搜索功能,我想过滤列表并重新绑定树视图。

如果我搜索child-1-1,我的 linq 应该能够获得以下记录:parent-1, child-1-1. 所以我必须获取包含我的搜索文本的记录,而不是获取带有 ID 的记录ParentID。所有ParentIDs(roots) 都有ParentID价值0,所以我必须继续获取记录,直到ParentIDis 0

数据示例:

ID  Name       ParentID
1   parent-1   0
2   parent-2   0
3   child-1-1  1
4   child-1-2  1
5   child-2-1  2

所以我的问题是如何获得 LINQ 表达式来获取如上所述的记录?

我的意思是像var mydata = from p in this.mylist where...???

4

1 回答 1

0

假设您的List<Node> myListwhereNode类具有(Id, ParentId, ...)基于https://stackoverflow.com/a/7063002/1594178变体的属性

static IEnumerable<Node> Parents(this IEnumerable<Node> nodes, int startId)
{
    Node node = nodes.Where(n => n.Id = startId).Single();
    yield return node;
    while (node.ParentId != 0)
    {
        node = nodes.Where(n => n.Id = node.ParentId).Single();
        yield return node;
    }
}

填充mydataid = 3 的孩子的父母以及该孩子使用

var mydata = mylist.Parents(3)
于 2013-04-19T03:54:06.927 回答