private SubjectData _GetSubjectData(XElement subsent, XElement breakSearchElement, bool breakByQuote) { subsent.ThrowIfNotSubsent(); if (subsent.IsSubsentHasObject() || subsent.IsSubsentInDirectSpeech()) { return(null); } var tuples = from it in subsent.Elements().TakeWhile(_ => _ != breakSearchElement) where it.IsElementCET() && it.IsVALUEStartsWith(CET_WORDS) let @saaet = GetTuple(it, breakByQuote) where @saaet.IsNotNull() where IsFollowingCondition(@saaet.Entity, breakByQuote) select @saaet; var aarray = tuples.ToArray(); if (!aarray.Any()) { return(null); } var verbValue = ENTITY_WORDS.AnyEx() ? CET_WORDS.First() + ' ' + ENTITY_WORDS.First() : null; var subjectEssences = new List <SubjectEssence>(); foreach (var a in aarray) { subjectEssences.Add(verbValue.IsNotNull() ? new SubjectEssence(a, verbValue) : new SubjectEssence(a)); } var subjectData = new SubjectData(subjectEssences, aarray.First().Entity, aarray.Last().Entity); return(subjectData); #region commented /*var a = t.FirstOrDefault(); * if ( a == null ) * return (null); * * var subjectEssences = new[] { ENTITY_WORDS.AnyEx() ? new SubjectEssence( a, CET_WORDS.First() + ' ' + ENTITY_WORDS.First() ) * : new SubjectEssence( a ) }; * var subjectData = new SubjectData( subjectEssences, a.Entity, a.Entity ); * return (subjectData);*/ #endregion }
protected bool EntityCondition(string value) { return(ENTITY_WORDS.Any(_ => value.StartsWith(_))); }