System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 29813fb7fd4a125019ee30c4d679ed89842bee0d:


0000: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 3c 63 6f 70  -------..// <cop
0050: 79 72 69 67 68 74 20 66 69 6c 65 3d 22 4a 6f 69  yright file="Joi
0060: 6e 53 79 6d 62 6f 6c 2e 63 73 22 20 63 6f 6d 70  nSymbol.cs" comp
0070: 61 6e 79 3d 22 4d 69 63 72 6f 73 6f 66 74 22 3e  any="Microsoft">
0080: 0d 0a 2f 2f 20 20 20 20 20 20 50 6f 72 74 69 6f  ..//      Portio
0090: 6e 73 20 6f 66 20 74 68 69 73 20 66 69 6c 65 20  ns of this file 
00a0: 63 6f 70 79 72 69 67 68 74 20 28 63 29 20 4d 69  copyright (c) Mi
00b0: 63 72 6f 73 6f 66 74 20 43 6f 72 70 6f 72 61 74  crosoft Corporat
00c0: 69 6f 6e 0d 0a 2f 2f 20 20 20 20 20 20 61 6e 64  ion..//      and
00d0: 20 61 72 65 20 72 65 6c 65 61 73 65 64 20 75 6e   are released un
00e0: 64 65 72 20 74 68 65 20 4d 69 63 72 6f 73 6f 66  der the Microsof
00f0: 74 20 50 75 6c 69 63 20 4c 69 63 65 6e 73 65 2e  t Pulic License.
0100: 20 20 53 65 65 0d 0a 2f 2f 20 20 20 20 20 20 68    See..//      h
0110: 74 74 70 3a 2f 2f 61 72 63 68 69 76 65 2e 6d 73  ttp://archive.ms
0120: 64 6e 2e 6d 69 63 72 6f 73 6f 66 74 2e 63 6f 6d  dn.microsoft.com
0130: 2f 45 46 53 61 6d 70 6c 65 50 72 6f 76 69 64 65  /EFSampleProvide
0140: 72 2f 50 72 6f 6a 65 63 74 2f 4c 69 63 65 6e 73  r/Project/Licens
0150: 65 2e 61 73 70 78 0d 0a 2f 2f 20 20 20 20 20 20  e.aspx..//      
0160: 6f 72 20 4c 69 63 65 6e 73 65 2e 74 78 74 20 66  or License.txt f
0170: 6f 72 20 64 65 74 61 69 6c 73 2e 0d 0a 2f 2f 20  or details...// 
0180: 20 20 20 20 20 41 6c 6c 20 72 69 67 68 74 73 20       All rights 
0190: 72 65 73 65 72 76 65 64 2e 0d 0a 2f 2f 20 3c 2f  reserved...// </
01a0: 63 6f 70 79 72 69 67 68 74 3e 0d 0a 2f 2f 2d 2d  copyright>..//--
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01f0: 2d 2d 2d 0d 0a 0d 0a 23 69 66 20 55 53 45 5f 45  ---....#if USE_E
0200: 4e 54 49 54 59 5f 46 52 41 4d 45 57 4f 52 4b 5f  NTITY_FRAMEWORK_
0210: 36 0d 0a 6e 61 6d 65 73 70 61 63 65 20 53 79 73  6..namespace Sys
0220: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
0230: 45 46 36 0d 0a 23 65 6c 73 65 0d 0a 6e 61 6d 65  EF6..#else..name
0240: 73 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74  space System.Dat
0250: 61 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 0d 0a 23  a.SQLite.Linq..#
0260: 65 6e 64 69 66 0d 0a 7b 0d 0a 20 20 75 73 69 6e  endif..{..  usin
0270: 67 20 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69  g System;..  usi
0280: 6e 67 20 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63  ng System.Collec
0290: 74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a  tions.Generic;..
02a0: 0d 0a 23 69 66 20 55 53 45 5f 45 4e 54 49 54 59  ..#if USE_ENTITY
02b0: 5f 46 52 41 4d 45 57 4f 52 4b 5f 36 0d 0a 20 20  _FRAMEWORK_6..  
02c0: 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 61 74  using System.Dat
02d0: 61 2e 45 6e 74 69 74 79 2e 43 6f 72 65 2e 4d 65  a.Entity.Core.Me
02e0: 74 61 64 61 74 61 2e 45 64 6d 3b 0d 0a 20 20 75  tadata.Edm;..  u
02f0: 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 61 74 61  sing System.Data
0300: 2e 45 6e 74 69 74 79 2e 43 6f 72 65 2e 43 6f 6d  .Entity.Core.Com
0310: 6d 6f 6e 2e 43 6f 6d 6d 61 6e 64 54 72 65 65 73  mon.CommandTrees
0320: 3b 0d 0a 23 65 6c 73 65 0d 0a 20 20 75 73 69 6e  ;..#else..  usin
0330: 67 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 4d 65  g System.Data.Me
0340: 74 61 64 61 74 61 2e 45 64 6d 3b 0d 0a 20 20 75  tadata.Edm;..  u
0350: 73 69 6e 67 20 53 79 73 74 65 6d 2e 44 61 74 61  sing System.Data
0360: 2e 43 6f 6d 6d 6f 6e 2e 43 6f 6d 6d 61 6e 64 54  .Common.CommandT
0370: 72 65 65 73 3b 0d 0a 23 65 6e 64 69 66 0d 0a 0d  rees;..#endif...
0380: 0a 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e  .  /// <summary>
0390: 0d 0a 20 20 2f 2f 2f 20 41 20 4a 6f 69 6e 20 73  ..  /// A Join s
03a0: 79 6d 62 6f 6c 20 69 73 20 61 20 73 70 65 63 69  ymbol is a speci
03b0: 61 6c 20 6b 69 6e 64 20 6f 66 20 53 79 6d 62 6f  al kind of Symbo
03c0: 6c 2e 0d 0a 20 20 2f 2f 2f 20 49 74 20 68 61 73  l...  /// It has
03d0: 20 74 6f 20 63 61 72 72 79 20 61 64 64 69 74 69   to carry additi
03e0: 6f 6e 61 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e  onal information
03f0: 0d 0a 20 20 2f 2f 2f 20 3c 6c 69 73 74 20 74 79  ..  /// <list ty
0400: 70 65 3d 22 62 75 6c 6c 65 74 22 3e 0d 0a 20 20  pe="bullet">..  
0410: 2f 2f 2f 20 3c 69 74 65 6d 3e 43 6f 6c 75 6d 6e  /// <item>Column
0420: 4c 69 73 74 20 66 6f 72 20 74 68 65 20 6c 69 73  List for the lis
0430: 74 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 69 6e 20  t of columns in 
0440: 74 68 65 20 73 65 6c 65 63 74 20 63 6c 61 75 73  the select claus
0450: 65 20 69 66 20 74 68 69 73 0d 0a 20 20 2f 2f 2f  e if this..  ///
0460: 20 73 79 6d 62 6f 6c 20 72 65 70 72 65 73 65 6e   symbol represen
0470: 74 73 20 61 20 73 71 6c 20 73 65 6c 65 63 74 20  ts a sql select 
0480: 73 74 61 74 65 6d 65 6e 74 2e 20 20 54 68 69 73  statement.  This
0490: 20 69 73 20 73 65 74 20 62 79 20 3c 73 65 65 20   is set by <see 
04a0: 63 72 65 66 3d 22 53 71 6c 47 65 6e 65 72 61 74  cref="SqlGenerat
04b0: 6f 72 2e 41 64 64 44 65 66 61 75 6c 74 43 6f 6c  or.AddDefaultCol
04c0: 75 6d 6e 73 22 2f 3e 2e 20 3c 2f 69 74 65 6d 3e  umns"/>. </item>
04d0: 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 45 78  ..  /// <item>Ex
04e0: 74 65 6e 74 4c 69 73 74 20 69 73 20 74 68 65 20  tentList is the 
04f0: 6c 69 73 74 20 6f 66 20 65 78 74 65 6e 74 73 20  list of extents 
0500: 69 6e 20 74 68 65 20 73 65 6c 65 63 74 20 63 6c  in the select cl
0510: 61 75 73 65 2e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  ause.</item>..  
0520: 2f 2f 2f 20 3c 69 74 65 6d 3e 46 6c 61 74 74 65  /// <item>Flatte
0530: 6e 65 64 45 78 74 65 6e 74 4c 69 73 74 20 2d 20  nedExtentList - 
0540: 69 66 20 74 68 65 20 4a 6f 69 6e 20 68 61 73 20  if the Join has 
0550: 6d 75 6c 74 69 70 6c 65 20 65 78 74 65 6e 74 73  multiple extents
0560: 20 66 6c 61 74 74 65 6e 65 64 20 61 74 20 74 68   flattened at th
0570: 65 20 0d 0a 20 20 2f 2f 2f 20 74 6f 70 20 6c 65  e ..  /// top le
0580: 76 65 6c 2c 20 77 65 20 6e 65 65 64 20 74 68 69  vel, we need thi
0590: 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f  s information to
05a0: 20 65 6e 73 75 72 65 20 74 68 61 74 20 65 78 74   ensure that ext
05b0: 65 6e 74 20 61 6c 69 61 73 65 73 20 61 72 65 20  ent aliases are 
05c0: 72 65 6e 61 6d 65 64 0d 0a 20 20 2f 2f 2f 20 63  renamed..  /// c
05d0: 6f 72 72 65 63 74 6c 79 20 69 6e 20 3c 73 65 65  orrectly in <see
05e0: 20 63 72 65 66 3d 22 53 71 6c 53 65 6c 65 63 74   cref="SqlSelect
05f0: 53 74 61 74 65 6d 65 6e 74 2e 57 72 69 74 65 53  Statement.WriteS
0600: 71 6c 22 2f 3e 3c 2f 69 74 65 6d 3e 0d 0a 20 20  ql"/></item>..  
0610: 2f 2f 2f 20 3c 69 74 65 6d 3e 4e 61 6d 65 54 6f  /// <item>NameTo
0620: 45 78 74 65 6e 74 20 68 61 73 20 61 6c 6c 20 74  Extent has all t
0630: 68 65 20 65 78 74 65 6e 74 73 20 69 6e 20 45 78  he extents in Ex
0640: 74 65 6e 74 4c 69 73 74 20 61 73 20 61 20 64 69  tentList as a di
0650: 63 74 69 6f 6e 61 72 79 2e 0d 0a 20 20 2f 2f 2f  ctionary...  ///
0660: 20 54 68 69 73 20 69 73 20 75 73 65 64 20 62 79   This is used by
0670: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 71 6c 47   <see cref="SqlG
0680: 65 6e 65 72 61 74 6f 72 2e 56 69 73 69 74 28 44  enerator.Visit(D
0690: 62 50 72 6f 70 65 72 74 79 45 78 70 72 65 73 73  bPropertyExpress
06a0: 69 6f 6e 29 22 2f 3e 20 74 6f 20 66 6c 61 74 74  ion)"/> to flatt
06b0: 65 6e 0d 0a 20 20 2f 2f 2f 20 72 65 63 6f 72 64  en..  /// record
06c0: 20 61 63 63 65 73 73 65 73 2e 3c 2f 69 74 65 6d   accesses.</item
06d0: 3e 0d 0a 20 20 2f 2f 2f 20 3c 69 74 65 6d 3e 49  >..  /// <item>I
06e0: 73 4e 65 73 74 65 64 4a 6f 69 6e 20 2d 20 69 73  sNestedJoin - is
06f0: 20 75 73 65 64 20 74 6f 20 64 65 74 65 72 6d 69   used to determi
0700: 6e 65 20 77 68 65 74 68 65 72 20 61 20 4a 6f 69  ne whether a Joi
0710: 6e 53 79 6d 62 6f 6c 20 69 73 20 61 6e 20 0d 0a  nSymbol is an ..
0720: 20 20 2f 2f 2f 20 6f 72 64 69 6e 61 72 79 20 6a    /// ordinary j
0730: 6f 69 6e 20 73 79 6d 62 6f 6c 2c 20 6f 72 20 6f  oin symbol, or o
0740: 6e 65 20 74 68 61 74 20 68 61 73 20 61 20 63 6f  ne that has a co
0750: 72 72 65 73 70 6f 6e 64 69 6e 67 20 53 71 6c 53  rresponding SqlS
0760: 65 6c 65 63 74 53 74 61 74 65 6d 65 6e 74 2e 3c  electStatement.<
0770: 2f 69 74 65 6d 3e 0d 0a 20 20 2f 2f 2f 20 3c 2f  /item>..  /// </
0780: 6c 69 73 74 3e 0d 0a 20 20 2f 2f 2f 20 0d 0a 20  list>..  /// .. 
0790: 20 2f 2f 2f 20 41 6c 6c 20 74 68 65 20 6c 69 73   /// All the lis
07a0: 74 73 20 61 72 65 20 73 65 74 20 65 78 61 63 74  ts are set exact
07b0: 6c 79 20 6f 6e 63 65 2c 20 61 6e 64 20 74 68 65  ly once, and the
07c0: 6e 20 75 73 65 64 20 66 6f 72 20 6c 6f 6f 6b 75  n used for looku
07d0: 70 73 2f 65 6e 75 6d 65 72 61 74 65 64 2e 0d 0a  ps/enumerated...
07e0: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
07f0: 0d 0a 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61  ..  internal sea
0800: 6c 65 64 20 63 6c 61 73 73 20 4a 6f 69 6e 53 79  led class JoinSy
0810: 6d 62 6f 6c 20 3a 20 53 79 6d 62 6f 6c 0d 0a 20  mbol : Symbol.. 
0820: 20 7b 0d 0a 20 20 20 20 70 72 69 76 61 74 65 20   {..    private 
0830: 4c 69 73 74 3c 53 79 6d 62 6f 6c 3e 20 63 6f 6c  List<Symbol> col
0840: 75 6d 6e 4c 69 73 74 3b 0d 0a 20 20 20 20 69 6e  umnList;..    in
0850: 74 65 72 6e 61 6c 20 4c 69 73 74 3c 53 79 6d 62  ternal List<Symb
0860: 6f 6c 3e 20 43 6f 6c 75 6d 6e 4c 69 73 74 0d 0a  ol> ColumnList..
0870: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74      {..      get
0880: 0d 0a 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20  ..      {..     
0890: 20 20 20 69 66 20 28 6e 75 6c 6c 20 3d 3d 20 63     if (null == c
08a0: 6f 6c 75 6d 6e 4c 69 73 74 29 0d 0a 20 20 20 20  olumnList)..    
08b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
08c0: 20 63 6f 6c 75 6d 6e 4c 69 73 74 20 3d 20 6e 65   columnList = ne
08d0: 77 20 4c 69 73 74 3c 53 79 6d 62 6f 6c 3e 28 29  w List<Symbol>()
08e0: 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  ;..        }..  
08f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f 6c        return col
0900: 75 6d 6e 4c 69 73 74 3b 0d 0a 20 20 20 20 20 20  umnList;..      
0910: 7d 0d 0a 20 20 20 20 20 20 73 65 74 20 7b 20 63  }..      set { c
0920: 6f 6c 75 6d 6e 4c 69 73 74 20 3d 20 76 61 6c 75  olumnList = valu
0930: 65 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20  e; }..    }.... 
0940: 20 20 20 70 72 69 76 61 74 65 20 4c 69 73 74 3c     private List<
0950: 53 79 6d 62 6f 6c 3e 20 65 78 74 65 6e 74 4c 69  Symbol> extentLi
0960: 73 74 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61  st;..    interna
0970: 6c 20 4c 69 73 74 3c 53 79 6d 62 6f 6c 3e 20 45  l List<Symbol> E
0980: 78 74 65 6e 74 4c 69 73 74 0d 0a 20 20 20 20 7b  xtentList..    {
0990: 0d 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65  ..      get { re
09a0: 74 75 72 6e 20 65 78 74 65 6e 74 4c 69 73 74 3b  turn extentList;
09b0: 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20   }..    }....   
09c0: 20 70 72 69 76 61 74 65 20 4c 69 73 74 3c 53 79   private List<Sy
09d0: 6d 62 6f 6c 3e 20 66 6c 61 74 74 65 6e 65 64 45  mbol> flattenedE
09e0: 78 74 65 6e 74 4c 69 73 74 3b 0d 0a 20 20 20 20  xtentList;..    
09f0: 69 6e 74 65 72 6e 61 6c 20 4c 69 73 74 3c 53 79  internal List<Sy
0a00: 6d 62 6f 6c 3e 20 46 6c 61 74 74 65 6e 65 64 45  mbol> FlattenedE
0a10: 78 74 65 6e 74 4c 69 73 74 0d 0a 20 20 20 20 7b  xtentList..    {
0a20: 0d 0a 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20  ..      get..   
0a30: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 69 66     {..        if
0a40: 20 28 6e 75 6c 6c 20 3d 3d 20 66 6c 61 74 74 65   (null == flatte
0a50: 6e 65 64 45 78 74 65 6e 74 4c 69 73 74 29 0d 0a  nedExtentList)..
0a60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
0a70: 20 20 20 20 20 66 6c 61 74 74 65 6e 65 64 45 78       flattenedEx
0a80: 74 65 6e 74 4c 69 73 74 20 3d 20 6e 65 77 20 4c  tentList = new L
0a90: 69 73 74 3c 53 79 6d 62 6f 6c 3e 28 29 3b 0d 0a  ist<Symbol>();..
0aa0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
0ab0: 20 20 20 72 65 74 75 72 6e 20 66 6c 61 74 74 65     return flatte
0ac0: 6e 65 64 45 78 74 65 6e 74 4c 69 73 74 3b 0d 0a  nedExtentList;..
0ad0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 73        }..      s
0ae0: 65 74 20 7b 20 66 6c 61 74 74 65 6e 65 64 45 78  et { flattenedEx
0af0: 74 65 6e 74 4c 69 73 74 20 3d 20 76 61 6c 75 65  tentList = value
0b00: 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
0b10: 20 20 70 72 69 76 61 74 65 20 44 69 63 74 69 6f    private Dictio
0b20: 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 53 79 6d  nary<string, Sym
0b30: 62 6f 6c 3e 20 6e 61 6d 65 54 6f 45 78 74 65 6e  bol> nameToExten
0b40: 74 3b 0d 0a 20 20 20 20 69 6e 74 65 72 6e 61 6c  t;..    internal
0b50: 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69   Dictionary<stri
0b60: 6e 67 2c 20 53 79 6d 62 6f 6c 3e 20 4e 61 6d 65  ng, Symbol> Name
0b70: 54 6f 45 78 74 65 6e 74 0d 0a 20 20 20 20 7b 0d  ToExtent..    {.
0b80: 0a 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74  .      get { ret
0b90: 75 72 6e 20 6e 61 6d 65 54 6f 45 78 74 65 6e 74  urn nameToExtent
0ba0: 3b 20 7d 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20  ; }..    }....  
0bb0: 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 69    private bool i
0bc0: 73 4e 65 73 74 65 64 4a 6f 69 6e 3b 0d 0a 20 20  sNestedJoin;..  
0bd0: 20 20 69 6e 74 65 72 6e 61 6c 20 62 6f 6f 6c 20    internal bool 
0be0: 49 73 4e 65 73 74 65 64 4a 6f 69 6e 0d 0a 20 20  IsNestedJoin..  
0bf0: 20 20 7b 0d 0a 20 20 20 20 20 20 67 65 74 20 7b    {..      get {
0c00: 20 72 65 74 75 72 6e 20 69 73 4e 65 73 74 65 64   return isNested
0c10: 4a 6f 69 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 73  Join; }..      s
0c20: 65 74 20 7b 20 69 73 4e 65 73 74 65 64 4a 6f 69  et { isNestedJoi
0c30: 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  n = value; }..  
0c40: 20 20 7d 0d 0a 0d 0a 20 20 20 20 70 75 62 6c 69    }....    publi
0c50: 63 20 4a 6f 69 6e 53 79 6d 62 6f 6c 28 73 74 72  c JoinSymbol(str
0c60: 69 6e 67 20 6e 61 6d 65 2c 20 54 79 70 65 55 73  ing name, TypeUs
0c70: 61 67 65 20 74 79 70 65 2c 20 4c 69 73 74 3c 53  age type, List<S
0c80: 79 6d 62 6f 6c 3e 20 65 78 74 65 6e 74 73 29 0d  ymbol> extents).
0c90: 0a 20 20 20 20 20 20 3a 20 62 61 73 65 28 6e 61  .      : base(na
0ca0: 6d 65 2c 20 74 79 70 65 29 0d 0a 20 20 20 20 7b  me, type)..    {
0cb0: 0d 0a 20 20 20 20 20 20 65 78 74 65 6e 74 4c 69  ..      extentLi
0cc0: 73 74 20 3d 20 6e 65 77 20 4c 69 73 74 3c 53 79  st = new List<Sy
0cd0: 6d 62 6f 6c 3e 28 65 78 74 65 6e 74 73 2e 43 6f  mbol>(extents.Co
0ce0: 75 6e 74 29 3b 0d 0a 20 20 20 20 20 20 6e 61 6d  unt);..      nam
0cf0: 65 54 6f 45 78 74 65 6e 74 20 3d 20 6e 65 77 20  eToExtent = new 
0d00: 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
0d10: 67 2c 20 53 79 6d 62 6f 6c 3e 28 65 78 74 65 6e  g, Symbol>(exten
0d20: 74 73 2e 43 6f 75 6e 74 2c 20 53 74 72 69 6e 67  ts.Count, String
0d30: 43 6f 6d 70 61 72 65 72 2e 4f 72 64 69 6e 61 6c  Comparer.Ordinal
0d40: 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20  IgnoreCase);..  
0d50: 20 20 20 20 66 6f 72 65 61 63 68 20 28 53 79 6d      foreach (Sym
0d60: 62 6f 6c 20 73 79 6d 62 6f 6c 20 69 6e 20 65 78  bol symbol in ex
0d70: 74 65 6e 74 73 29 0d 0a 20 20 20 20 20 20 7b 0d  tents)..      {.
0d80: 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 61  .        this.na
0d90: 6d 65 54 6f 45 78 74 65 6e 74 5b 73 79 6d 62 6f  meToExtent[symbo
0da0: 6c 2e 4e 61 6d 65 5d 20 3d 20 73 79 6d 62 6f 6c  l.Name] = symbol
0db0: 3b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  ;..        this.
0dc0: 45 78 74 65 6e 74 4c 69 73 74 2e 41 64 64 28 73  ExtentList.Add(s
0dd0: 79 6d 62 6f 6c 29 3b 0d 0a 20 20 20 20 20 20 7d  ymbol);..      }
0de0: 0d 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 7d 0d  ..    }..  }..}.
0df0: 0a                                               .