如何使用EF4过滤子表?

时间:2012-02-29 12:07:04

标签: c# .net entity-framework-4 foreign-keys filtering

我有这些表

CREATE TABLE parent
( 
     id               NUMBER(10, 0) NOT NULL, 
     name             VARCHAR2(100 CHAR) NOT NULL, 
     primary key (id), 
)

CREATE TABLE child
( 
     id               NUMBER(10, 0) NOT NULL, 
     name             VARCHAR2(100 CHAR) NOT NULL, 
     conclusion       DATE,
     parent_id        NUMBER(10, 0) NOT NULL,
)

ALTER TABLE child ADD constraint foreign key (parent_id) references parent; 

我希望获得List<Parent>,其中每个Parent.Child只包含!CONCLUSION.HasValue()

的元素

2 个答案:

答案 0 :(得分:1)

var result = (from p in Parent
              select new Parent()
              {
                id = p.id,
                child = (from c in Child
                         where c.parent_id = p.id &&
                         !c.conclusion.HasValue()
                         select c).ToList() 
              }).ToList();

这未经过测试,但它应该完成这项工作

答案 1 :(得分:0)

第二个选择是

var parents = context.Parents.ToList();
foreach(var parent in parents)
{
    var invalidChildren = parent.CHILD
        .Where(child => child.CONCLUSION.HasValue())
        .ToArray();
    foreach(var invalid in invalidChildren)
    {
        parent.CHILD.Remove(invalid);
    }
}