public async Task <List <AiGroup> > ParseGroups(WordDbContext wordDbContext, Variant variant, List <Word> words, AiSentence aiSentence) { List <AiGroup> result = new List <AiGroup>(); var gropups = variant.Groups.ToList(); int i = 0; foreach (var item in gropups) { AiGroup aiGroup = new AiGroup(); aiGroup.AiDescription = await FindOrAddAiDescription(wordDbContext, item.Descr); aiGroup.Last = (int)item.Last; aiGroup.Start = (int)item.Start; aiGroup.IsSubj = item.IsSubj; aiGroup.IsGoup = item.IsGroup; item.AiGroup = aiGroup; SetParent(gropups, item, i == 0 ? -1 : i); result.Add(aiGroup); aiGroup.AiSentence = aiSentence; wordDbContext.Add(aiGroup); CreateAiWordsGroup(words, aiGroup, wordDbContext); i++; } //SetParentIdGroups(result); return(result); }
private void CreateAiWordsGroup(List <Word> words, AiGroup aiGroup, WordDbContext wordDbContext) { var cols = words.Skip(aiGroup.Start).Take(aiGroup.Last + 1); foreach (var word in cols) { var aiGroupWord = new AiGroupWord(); aiGroupWord.AiWord = word.AiWord; aiGroupWord.AiGroup = aiGroup; wordDbContext.Add(aiGroupWord); } }