LINQ lambda表达式子查询在同一个表中查找父记录

时间:2016-03-15 21:54:32

标签: c# sql sql-server lambda

是否可以使用lambda表达式在C#中运行此查询?

SELECT Name
FROM Table
WHERE ID IN (SELECT ParentId FROM Table WHERE Name = 'Child')

因此每行都有一个ID和一个ParentId。我需要按Name搜索子记录,以获取ParentId,这是我想要检索ID的父级的Name

1 个答案:

答案 0 :(得分:3)

检查此代码:

var l = Table.Where(x => Table.Where(n => n.Name == "child")
    .Select(n => n.ParentId).Any(y => y == x.Id)).Select(y=>y.Name);

我用这个类来测试结果:

class Person
{
    public int Id { get; set; }
    public int ParentId { get; set; }
    public string Name { get; set; }

    public Person(int id, int parentId, string name)
    {
        Id = id;
        ParentId = parentId;
        Name = name;
    }
}

我希望它会对你有所帮助。