Я создаю модуль из CSV-файла с субмодулем по умолчанию, каждый субмодуль содержит сегменты (каждая строка из CSV), теперь мне нужно разделить сегменты на множество субмодулей. Когда я создал проект, я создал 1 подмодуль по умолчанию со всеми сегментами как дочерними для него.
Теперь для кода:
public Modules splitModule(int id, string type, int amount){
var ModuleSplit = _context.Modules.Include(x=>x.SourceLang).Where(x=>x.Id == id).FirstOrDefault();
var DefaultSubM = _context.Submodules.Include(x=>x.Segments).Where(x=>x.ModuleId == ModuleSplit.Id).FirstOrDefault();
List<Submodules> listToAdd = new List<Submodules>();
if(type == "linguists"){
//linguists = rows / linguists , rounded
var rowAmount = DefaultSubM.Segments.Count();
int chunkSize = rowAmount / amount ;
for(int i=0 ; i< amount-1 ; i++){
Submodules newSub = new Submodules();
newSub.Status = Abr.Active;
newSub.Token = Guid.NewGuid().ToString();
listToAdd.Add(newSub);
}
_context.Submodules.AddRange(listToAdd);
_context.SaveChanges();
var skipAm = rowAmount;
if(rowAmount % amount != 0){
skipAm++;
}
foreach(var a in listToAdd){
var subL = DefaultSubM.Segments.Take(rowAmount).Skip(skipAm);
foreach(var b in subL){
a.Segments.Add(b);
DefaultSubM.Segments.Remove(b);
}
}
_context.SaveChanges();
}
Мне нужно взять количество сегментов ChuckSize из субмодуля по умолчанию в каждом новом. Есть ли правильный способ сделать это? из того, что я знаю (мало), мне нужно было бы сначала добавить их в контекст, сохранить, чтобы получить идентификаторы. затем возьмите все, кроме первого ChunkSize, из стандартного и добавьте их ко второму, а затем повторите для каждого рекурсивно.
Почувствуйте, как много кода, и запутаться Может быть, мне не хватает волшебства с помощью linq или метода.
РЕДАКТИРОВАТЬ: Придумал это решение, но чувствует себя грязным и более сложным, чем он должен быть ...
РЕДАКТИРОВАТЬ 2: Где-то читать, мне нужно использовать Child.Parent = newParent Object.