linq查询父级别有关问题

linq查询父级别问题.
而知一个 a 表有三列
id name cid
1 文具 0
2 笔类 1
3 中性笔 2

文具是父类属于第一层,笔类是文具的子类属于第二层,中性笔是笔类的子类属于第三层。

cid里面是放父类id,如果为0则是最上级父类


linq如何用一条查询语句查出该表一二层的数据,排除掉所有第三层的数据!谢谢!

------解决方案--------------------
假设数据类型定义为DataType,可以这样查询
C# code
            
var rt = from DataType d in datas 
         where d.cid == 0 || datas.First(x => x.id == d.cid).cid == 0 


    public class DataType
    {
        public int id;
        public string name;
        public int cid;
    }