2013-11-14 3 views
0

У меня есть объект с коллекцией детскойEntity Framework Добавление и удаление элементов в коллекции эффективно

данного списка идентификаторов => NewIdList Я хочу пунктов от детей, которые не в NewIdList и создать новый элемент для те идентификаторы, которые находятся в NewIdList, но не находятся у детей.

Извините псевдопользователей код :)

myEntity.Children = new [] {2, 3} 

var newIdList = new [] {1, 2, 4, 5} 

// Do Magic 

myEntity.Children = new [] {1, 2, 4, 5} 

// Note that '2' would not have a created date 
// or audit record as it was in the list before Do Magic occured 

Я строгание делать что-то вроде этого

var newIdList = new [] {1, 2, 4, 5}; 
var childrenToRemove = myEntity.Children.Where(c=> !newIdList.Contains(c)); 
var childrenToAdd = newIdList.Where(c => myEntity.Children.Contains(c)); 

foreach(var cr in childrenToRemove){ 
    myEntity.Children.Remove(cr); 
} 

foreach(var ca in childrenToAdd){ 
    myEntity.Children.Add(cr); 
} 

Является ли это лучший способ для достижения этой цели ... он чувствует себя вид неуклюжий

ответ

1
var list1 = new[] { 2, 3 }; 
var list2 = new[] { 1, 2, 4, 5 }; 

var excepts = list1.Except(list2); 
var union = list1.Union(list2); 
var newlist = union.Except(excepts); 

Console.WriteLine(string.Join(",", newlist)); 
+0

Будет ли это работать с ef или это просто linq – Peter

+1

О, я вижу, это не полезно. –

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