<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://code.msdn.microsoft.com/rss.xsl"?><rss version="2.0"><channel><title>LinqToCodeModel</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Project/ProjectRss.aspx</link><description>Linq facilities over FileCodeModel object graphs</description><item><title>UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008)</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746</link><description>The zip file contains&amp;#58;&lt;br /&gt;&amp;#42; Source code&lt;br /&gt;&amp;#42; Unit tests</description><author></author><pubDate>Wed, 02 Apr 2008 16:19:51 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008) 20080402P</guid></item><item><title>UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008)</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746</link><description>The zip file contains&amp;#58;&lt;br /&gt;&amp;#42; Source code&lt;br /&gt;&amp;#42; Unit tests</description><author></author><pubDate>Tue, 01 Apr 2008 19:45:14 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008) 20080401P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=11</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Samples
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names
&lt;/h3&gt;&lt;pre&gt;
 
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            Debug.WriteLine(@class.Name);
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names using Linq
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));
&lt;/pre&gt;     &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            if(@class.Name.Equals(&amp;quot;Foo&amp;quot;))
                            {
                                break;
                            }
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name using Linq 
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            var MyClass = 
                  fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
                     .SingleOrDefault(@class =&amp;gt; @class.Name.Equals(&amp;quot;Foo&amp;quot;)); 
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More%20Samples&amp;amp;referringTitle=Home"&gt;More Samples&lt;/a&gt;
&lt;/h2&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 19:39:24 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Get class functions by name
&lt;/h1&gt; &lt;br /&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myFunctions = myClass.GetFunctionsByName(&amp;quot;MyFunction&amp;quot;);
 
//OR
 
            FileCodeModel fcm;
 
            var myFunctions = fcm.GetIEnumerable&amp;lt;CodeFunction&amp;gt;().Where(function =&amp;gt; function.Name.Equals(&amp;quot;MyFunction&amp;quot;))
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class public functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myPublicFunctions = myClass.GetFunctionsByVisibility(vsCMAccess.vsCMAccessPublic);
 
//OR
 
            FileCodeModel fcm;
 
            var myPublicFunctions = fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;().Where(function =&amp;gt; function.Access.Equals(vsCMAccess.vsCMAccessPublic));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class virtual functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myVirtualFunctions = myClass.GetFunctionsByModifier(FunctionModifier.Virtual);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get functions attributes with a name starting with...
&lt;/h2&gt;&lt;pre&gt;
            CodeFunction myFunction;
 
            var myAttributes = 
                myFunction.GetAttributes()
                .Where(
                    attribute =&amp;gt; attribute.Name.StartsWith(&amp;quot;BrowsableAttribute&amp;quot;, StringComparison.OrdinalIgnoreCase));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get interface properties with attributes
&lt;/h2&gt;&lt;pre&gt;
            CodeInterface myInterface;
 
            var myProperties = 
                myInterface.GetProperties()
                .Where(property =&amp;gt; property.Attributes.Count &amp;gt; 0);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get a class by full name
&lt;/h2&gt;&lt;pre&gt;
            FileCodeModel fcm;
 
            var myClass = fcm.GetClassByFullName(&amp;quot;MyNamespace.MyClass&amp;quot;);
&lt;/pre&gt; &lt;br /&gt;More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 19:17:10 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Get class functions by name
&lt;/h1&gt; &lt;br /&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myFunctions = myClass.GetFunctionsByName(&amp;quot;MyFunction&amp;quot;);
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get class public functions
&lt;/h1&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myPublicFunctions = myClass.GetFunctionsByVisibility(vsCMAccess.vsCMAccessPublic);
 
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get class virtual functions
&lt;/h1&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myVirtualFunctions = myClass.GetFunctionsByModifier(FunctionModifier.Virtual);
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get functions attributes with a name starting with...
&lt;/h1&gt;&lt;pre&gt;
            CodeFunction myFunction;
 
            var myAttributes = 
                myFunction.GetAttributes()
                .Where(
                    attribute =&amp;gt; attribute.Name.StartsWith(&amp;quot;BrowsableAttribute&amp;quot;, StringComparison.OrdinalIgnoreCase));
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get interface properties with attributes
&lt;/h1&gt;&lt;pre&gt;
            CodeInterface myInterface;
 
            myInterface.GetProperties()
                .Where(property =&amp;gt; property.Attributes.Count &amp;gt;0);
&lt;/pre&gt; &lt;br /&gt;More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 19:08:07 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 18:26:59 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=9</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Samples
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names
&lt;/h3&gt;&lt;pre&gt;
 
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            Debug.WriteLine(@class.Name);
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names using Linq
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));
&lt;/pre&gt;     &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            if(@class.Name.Equals(&amp;quot;Foo&amp;quot;))
                            {
                                break;
                            }
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name using Linq 
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
                .SingleOrDefault(@class =&amp;gt; @class.Name.Equals(&amp;quot;Foo&amp;quot;)); 
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More%20Samples&amp;amp;referringTitle=Home"&gt;More Samples&lt;/a&gt;
&lt;/h2&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 18:25:04 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=8</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Samples
&lt;/h2&gt;&lt;pre&gt;
            namespace MyNamespace
            {
                class MyClass1
                {
                    public int MyProperty { get; set; }
 
                    class MySubClass1
                    { 
                    }
                }
 
                class MyClass2
                {
                }
            }
 
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            //Locate classes and print names
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            Debug.WriteLine(@class.Name);
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
 
            //Locate classes and print names using Linq
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));
            
            //Locate a class with a &amp;quot;Foo&amp;quot; name
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            if(@class.Name.Equals(&amp;quot;Foo&amp;quot;))
                            {
                                break;
                            }
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
 
            //Locate a class with a &amp;quot;Foo&amp;quot; name using Linq 
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
                .SingleOrDefault(@class =&amp;gt; @class.Name.Equals(&amp;quot;Foo&amp;quot;)); 
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 17:15:04 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=7</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;!!Samples&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 16:53:17 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;!!Samples&lt;br /&gt; &lt;br /&gt;            //Locate classes and print names&lt;br /&gt; &lt;br /&gt;            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;&lt;br /&gt; &lt;br /&gt;            foreach(CodeElement element in fcm.CodeElements)&lt;br /&gt;            {&lt;br /&gt;                if(element is CodeNamespace)&lt;br /&gt;                {&lt;br /&gt;                    CodeNamespace @namespace = element as CodeNamespace;&lt;br /&gt; &lt;br /&gt;                    foreach(CodeElement subElement in @namespace.Children)&lt;br /&gt;                    {&lt;br /&gt;                        if(subElement is CodeClass)&lt;br /&gt;                        {&lt;br /&gt;                            CodeClass @class = subElement as CodeClass;&lt;br /&gt; &lt;br /&gt;                            Debug.WriteLine(@class.Name);&lt;br /&gt; &lt;br /&gt;                            foreach(CodeElement subElement2 in @class.Children)&lt;br /&gt;                            {&lt;br /&gt;                                if(subElement2 is CodeClass)&lt;br /&gt;                                {&lt;br /&gt;                                    Debug.WriteLine(((CodeClass)subElement2).Name);&lt;br /&gt;                                }&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt; &lt;br /&gt;            //Locate classes and print names using Linq&lt;br /&gt; &lt;br /&gt;            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()&lt;br /&gt;               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 16:52:53 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Samples
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names
&lt;/h3&gt;&lt;pre&gt;
 
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            Debug.WriteLine(@class.Name);
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names using Linq
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));
&lt;/pre&gt;     &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            if(@class.Name.Equals(&amp;quot;Foo&amp;quot;))
                            {
                                break;
                            }
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name using Linq 
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            var myClass = 
                  fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
                     .SingleOrDefault(@class =&amp;gt; @class.Name.Equals(&amp;quot;Foo&amp;quot;)); 
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More%20Samples&amp;amp;referringTitle=Home"&gt;More Samples&lt;/a&gt;
&lt;/h2&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 16:39:38 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=6</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Get class functions by name
&lt;/h2&gt; &lt;br /&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myFunctions = myClass.GetFunctionsByName(&amp;quot;MyFunction&amp;quot;);
 
//OR
 
            FileCodeModel fcm;
 
            var myFunctions = fcm.GetIEnumerable&amp;lt;CodeFunction&amp;gt;().Where(function =&amp;gt; function.Name.Equals(&amp;quot;MyFunction&amp;quot;))
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class public functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myPublicFunctions = myClass.GetFunctionsByVisibility(vsCMAccess.vsCMAccessPublic);
 
//OR
 
            FileCodeModel fcm;
 
            var myPublicFunctions = fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;().Where(function =&amp;gt; function.Access.Equals(vsCMAccess.vsCMAccessPublic));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class virtual functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myVirtualFunctions = myClass.GetFunctionsByModifier(FunctionModifier.Virtual);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get functions attributes with a name starting with...
&lt;/h2&gt;&lt;pre&gt;
            CodeFunction myFunction;
 
            var myAttributes = 
                myFunction.GetAttributes()
                .Where(
                    attribute =&amp;gt; attribute.Name.StartsWith(&amp;quot;BrowsableAttribute&amp;quot;, StringComparison.OrdinalIgnoreCase));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get interface properties with attributes
&lt;/h2&gt;&lt;pre&gt;
            CodeInterface myInterface;
 
            var myProperties = 
                myInterface.GetProperties()
                .Where(property =&amp;gt; property.Attributes.Count &amp;gt; 0);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get a class by full name
&lt;/h2&gt;&lt;pre&gt;
            FileCodeModel fcm;
 
            var myClass = fcm.GetClassByFullName(&amp;quot;MyNamespace.MyClass&amp;quot;);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get interfaces with more than one implemented interface
&lt;/h2&gt;&lt;pre&gt;
          FileCodeModel fcm;
 
          var myInterfaces =
              fcm.GetIEnumerable&amp;lt;CodeInterface&amp;gt;()
                 .Where(@interface =&amp;gt; @interface.GetImplementedInterfaces().Count &amp;gt; 0);
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 16:22:27 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Get class functions by name
&lt;/h2&gt; &lt;br /&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myFunctions = myClass.GetFunctionsByName(&amp;quot;MyFunction&amp;quot;);
 
//OR
 
            FileCodeModel fcm;
 
            var myFunctions = fcm.GetIEnumerable&amp;lt;CodeFunction&amp;gt;().Where(function =&amp;gt; function.Name.Equals(&amp;quot;MyFunction&amp;quot;))
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class public functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myPublicFunctions = myClass.GetFunctionsByVisibility(vsCMAccess.vsCMAccessPublic);
 
//OR
 
            FileCodeModel fcm;
 
            var myPublicFunctions = fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;().Where(function =&amp;gt; function.Access.Equals(vsCMAccess.vsCMAccessPublic));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get class virtual functions
&lt;/h2&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myVirtualFunctions = myClass.GetFunctionsByModifier(FunctionModifier.Virtual);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get functions attributes with a name starting with...
&lt;/h2&gt;&lt;pre&gt;
            CodeFunction myFunction;
 
            var myAttributes = 
                myFunction.GetAttributes()
                .Where(
                    attribute =&amp;gt; attribute.Name.StartsWith(&amp;quot;BrowsableAttribute&amp;quot;, StringComparison.OrdinalIgnoreCase));
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get interface properties with attributes
&lt;/h2&gt;&lt;pre&gt;
            CodeInterface myInterface;
 
            var myProperties = 
                myInterface.GetProperties()
                .Where(property =&amp;gt; property.Attributes.Count &amp;gt; 0);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get a class by full name
&lt;/h2&gt;&lt;pre&gt;
            FileCodeModel fcm;
 
            var myClass = fcm.GetClassByFullName(&amp;quot;MyNamespace.MyClass&amp;quot;);
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
Get interfaces with more than one implemented interface
&lt;/h2&gt;&lt;pre&gt;
          FileCodeModel fcm;
 
          var myClass =
              fcm.GetIEnumerable&amp;lt;CodeInterface&amp;gt;()
                 .Where(@interface =&amp;gt; @interface.GetImplementedInterfaces().Count &amp;gt; 0);
&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 16:22:02 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: More Samples</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More Samples&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Get class functions by name
&lt;/h1&gt; &lt;br /&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myFunctions = myClass.GetFunctionsByName(&amp;quot;MyFunction&amp;quot;);
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get class public functions
&lt;/h1&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myPublicFunctions = myClass.GetFunctionsByVisibility(vsCMAccess.vsCMAccessPublic);
 
&lt;/pre&gt; &lt;br /&gt;&lt;h1&gt;
Get class virtual functions
&lt;/h1&gt;&lt;pre&gt;
            CodeClass myClass;
 
            var myVirtualFunctions = myClass.GetFunctionsByModifier(FunctionModifier.Virtual);
&lt;/pre&gt; &lt;br /&gt;More to come..&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 15:54:50 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: More Samples 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=10</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Samples
&lt;/h2&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names
&lt;/h3&gt;&lt;pre&gt;
 
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            Debug.WriteLine(@class.Name);
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate classes and print names using Linq
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
               .ForEach(@class =&amp;gt; Debug.WriteLine(@class.Name));
&lt;/pre&gt;     &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            foreach(CodeElement element in fcm.CodeElements)
            {
                if(element is CodeNamespace)
                {
                    CodeNamespace @namespace = element as CodeNamespace;
 
                    foreach(CodeElement subElement in @namespace.Children)
                    {
                        if(subElement is CodeClass)
                        {
                            CodeClass @class = subElement as CodeClass;
 
                            if(@class.Name.Equals(&amp;quot;Foo&amp;quot;))
                            {
                                break;
                            }
 
                            //Inner classes are not considered here
                        }
                    }
                }
            }
&lt;/pre&gt; &lt;br /&gt;&lt;h3&gt;
Locate a class with a &amp;quot;Foo&amp;quot; name using Linq 
&lt;/h3&gt;&lt;pre&gt;
            FileCodeModel fcm = dte.ActiveDocument.ProjectItem.FileCodeModel;
 
            fcm.GetIEnumerable&amp;lt;CodeClass&amp;gt;()
                .SingleOrDefault(@class =&amp;gt; @class.Name.Equals(&amp;quot;Foo&amp;quot;)); 
&lt;/pre&gt; &lt;br /&gt;&lt;h2&gt;
&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=More%20Samples&amp;amp;referringTitle=Home"&gt;More Samples&lt;/a&gt;
&lt;/h2&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 15:50:55 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008)</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746</link><description>The zip file contains&amp;#58;&lt;br /&gt;&amp;#42; Source code&lt;br /&gt;&amp;#42; Unit tests</description><author></author><pubDate>Fri, 28 Mar 2008 15:50:05 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: LinqToCodeModel 1.0 (Mar 28, 2008) 20080328P</guid></item><item><title>UPDATED WIKI: Pre-requisites</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;span class="unresolved"&gt;Cannot resolve link: &lt;/span&gt;[image:ClariusLabsCodePlex.png]&lt;br /&gt;This is the list of software pre-requisites for the &lt;b&gt;LinqToCodeModel&lt;/b&gt; setup.&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/products/default.aspx" class="externalLink"&gt;Visual Studio 2008 (Professional / Team Suite)&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 15:13:44 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Pre-requisites 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt; &lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;span class="unresolved"&gt;Cannot resolve link: &lt;/span&gt;[release:December 2007 CTP release|8934]&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Install&amp;amp;referringTitle=Home"&gt;How to install it?&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Install&amp;amp;referringTitle=Home"&gt;How to install it?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 15:11:23 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=5</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt;&lt;b&gt;LinqToCodeModel&lt;/b&gt; is a sample library that provides Linq facilities over FileCodeModel object graphs. It is based on CodeElement iterators and extension methods.&lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 13:03:59 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item><item><title>UPDATED WIKI: Home</title><link>http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Home&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;img src="http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=LinqToCodeModel&amp;amp;DownloadId=1389" alt="ClariusLabsCodePlex.png" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Introduction
&lt;/h2&gt; &lt;br /&gt; &lt;br /&gt;For more information on VSX, visit the VSX Developer Center at &lt;a href="http://msdn.com/vsx" class="externalLink"&gt;http://msdn.com/vsx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;h2&gt;
Links
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;Releases&lt;/th&gt;&lt;th&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Release/ProjectReleases.aspx?ReleaseId=746"&gt;1.0.0.0 release&lt;/a&gt;&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;h2&gt;
Target audience
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;VSX developers&lt;/li&gt;&lt;li&gt;Visual Studio enthusiasts&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;h2&gt;
Getting started
&lt;/h2&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/LinqToCodeModel/Wiki/View.aspx?title=Pre-requisites&amp;amp;referringTitle=Home"&gt;Pre-requisites&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt; &lt;br /&gt;This project is sponsored by &lt;a href="http://www.codeplex.com/clarius" class="externalLink"&gt;Clarius Labs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;</description><author>pablogaliano</author><pubDate>Fri, 28 Mar 2008 13:01:00 GMT</pubDate><guid isPermaLink="false">UPDATED WIKI: Home 20080328P</guid></item></channel></rss>