使用键过滤嵌套的DTO

时间:2013-01-23 15:13:22

标签: linq c#-4.0 entity-framework-4 linq-to-objects public

我有DTO Suach列表:

 Public Class UKey
{
    public Int64 Key{ get; set; }

}

Public Class Test : UKey
{
    public Int64? CityId  { get; set; }
    public Test2  test2{ get; set; }
}
Public Class Test2 : UKey
{
    public Int64? CountryId { get; set; }
    public Test3 test3 {get;set;}
}
public Class Test3 :UKey
{

}

我有嵌套DTO,例如,类test有类test 2的成员,类test2有类test class 3的成员,每个类都有自己的唯一键,这个键不能在任何一个中重复,像GUID这样的东西。 我想查询Class Test,找到具有给定唯一键的这些嵌套Dtos中的一个。

1 个答案:

答案 0 :(得分:0)

假设测试对象是IEnumerable,它是一组Test对象;

tests.SingleOrDefault(q => q.test2.Key == id || q.test2.test3.Key == id);

更新:您需要应用递归搜索。我稍微改变了基类;

public class UKey
{
public Int64 Key { get; set; }
public UKey ReferencedEntity { get; set; }
}

和搜索功能:

private UKey Search(UKey entity, Int64 id)
{
    UKey result = null;
    if (entity.Key == id)
        result = entity;
    else
    {
        result = this.Search(entity.ReferencedEntity,id);
    }
    return result;
}