private IEnumerable <IGrouping <string, KeyValuePair <string, UOPair <char> > > > SnpGroupsCidToNucPairEnumerable(List <string> cidList) { using (TextReader textReader = TPedFile.OpenText()) { string line; while (null != (line = textReader.ReadLine())) { string[] fields = line.Split(new[] { '\t' }, 5); string snpName = fields[1]; string[] pairArray = fields[4].Split('\t'); Helper.CheckCondition(pairArray.Length == cidList.Count, "Expect the number of nuc pairs on a line to be the same as the number of cids in the tfam file"); var cidAndPairQuery = cidList.Zip(pairArray, (cid, pairString) => new KeyValuePair <string, UOPair <char> >(cid, StringToUOPairConverter(pairString))); yield return(Grouping <string, KeyValuePair <string, UOPair <char> > > .GetInstance(snpName, cidAndPairQuery.GetEnumerator())); } } }