2012-02-29 1 views
0

У меня есть эти таблицыКак фильтровать дочерние таблицы с EF4?

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()

ответ

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); 
    } 
} 
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

Yup ... после того, как я опубликовал первый ответ, выяснил, что я ошибся и обновил его сейчас. –

+0

Ваша вторая версия ближе, но мне интересно, примет ли 'EntityCollection ' 'Список ' –

 Смежные вопросы

  • Нет связанных вопросов^_^