<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Geekswithblogs.net</title><link>http://geekswithblogs.net/MainFeed.aspx</link><description>Geekswithblogs.net</description><generator>Subtext Version 0.0.0.0</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/geekswithblogs" /><feedburner:info uri="geekswithblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>WCF Error tracking</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/PG0TbV--VMc/wcf-error-tracking.aspx</link><pubDate>Fri, 18 May 2012 14:24:19 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/pabothu/archive/2012/05/18/wcf-error-tracking.aspx</guid><wfw:comment>http://geekswithblogs.net/pabothu/comments/149685.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/pabothu/comments/commentRss/149685.aspx</wfw:commentRss><comments>http://geekswithblogs.net/pabothu/archive/2012/05/18/wcf-error-tracking.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/pabothu/services/trackbacks/149685.aspx</trackback:ping><source url="http://geekswithblogs.net/pabothu/rss.aspx">WCF Error tracking</source><description>&lt;p&gt;&lt;font size="2"&gt;Have you ever gotten the following error working with WCF services?&lt;/font&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;font size="2"&gt;Open up your web.config/app.config on the server side and add the following&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre class="brush:xml"&gt;&amp;lt;system.diagnostics&amp;gt;
 &amp;lt;!-- This logging is great when WCF does not work. --&amp;gt;
 &amp;lt;sources&amp;gt;
  &amp;lt;source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"&amp;gt;
   &amp;lt;listeners&amp;gt;
    &amp;lt;add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "c:\traces.svclog" /&amp;gt;
   &amp;lt;/listeners&amp;gt;
  &amp;lt;/source&amp;gt;
 &amp;lt;/sources&amp;gt;
&amp;lt;/system.diagnostics&amp;gt;&lt;/pre&gt;
&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;A file called &lt;strong&gt;traces.svclog&lt;/strong&gt; will be stored on your harddrive. This will contain the the error message that you're looking for. All you now need is the right tool to open it up. It is called &lt;strong&gt;svctraceviewer.exe&lt;/strong&gt; and usually resides in the folder &lt;i&gt;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin&lt;/i&gt;. If you don't have this folder or anything like it, you go download the Microsoft Windows SDK from &lt;/font&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&amp;amp;displaylang=en"&gt;&lt;font size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;.&lt;br /&gt;&lt;/font&gt;
&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;Now you can open your log and look for the error that is thrown. There you will find a detailed stacktrace of what's wrong.&lt;br /&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt; &lt;img src="http://geekswithblogs.net/pabothu/aggbug/149685.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/PG0TbV--VMc" height="1" width="1"/&gt;</description><dc:creator>Pavan Kumar Pabothu</dc:creator><feedburner:origLink>http://geekswithblogs.net/pabothu/archive/2012/05/18/wcf-error-tracking.aspx</feedburner:origLink></item><item><title>Accessing QuickBooks with Entity Framework</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/nZZ8u3fiIwE/accessing-quickbooks-with-entity-framework.aspx</link><pubDate>Fri, 18 May 2012 13:02:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dataintegration/archive/2012/05/18/accessing-quickbooks-with-entity-framework.aspx</guid><wfw:comment>http://geekswithblogs.net/dataintegration/comments/149684.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dataintegration/comments/commentRss/149684.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dataintegration/archive/2012/05/18/accessing-quickbooks-with-entity-framework.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/dataintegration/services/trackbacks/149684.aspx</trackback:ping><source url="http://geekswithblogs.net/dataintegration/rss.aspx">Accessing QuickBooks with Entity Framework</source><description>&lt;p&gt;
     Entity Framework is an object-relational mapping framework that can be used to work with data as objects. While you can run the ADO.NET Entity 
     Data Model wizard in Visual Studio to handle generating the Entity Model for yourself, this can put you at a disadvantage if there are 
     changes in your data source or if you want more control over how the entities operate. In this article we will demonstrate a Code First 
     approach to accessing your QuickBooks Data using the RSSBus ADO.NET Provider.
	&lt;/p&gt;
  
  &lt;p&gt;
    Even though this article uses the QuickBooks Data Provider, the exact same procedure outlined below can be used 
    with any &lt;a href="http://www.rssbus.com/ado/"&gt;RSSBus ADO.NET Data Providers&lt;/a&gt; to access data through Entity Framework.
	&lt;/p&gt;
	
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 1:&lt;/b&gt; Open Visual Studio and create a new Windows Form project. For the purposes of this article, we will be using a C# project.&lt;/li&gt;
		&lt;li&gt;&lt;b&gt;Step 2:&lt;/b&gt; Add to the project an app.config file. In this file, add the connection string and provider like so:&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang="xml"&gt;&lt;pre&gt;&amp;lt;connectionStrings&amp;gt;
	&amp;lt;add name="QuickBooksContext" connectionString="Offline=False;User=USERNAME;Password=PASSWORD;URL=http://localhost:2080;QBXML Version=6.0" providerName="System.Data.RSSBus.QuickBooks" /&amp;gt;
&amp;lt;/connectionStrings&amp;gt;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 3:&lt;/b&gt; Add a reference to System.Data.Entity and EntityFramework in your project. You may need to download the EntityFramework.dll from Microsoft. In this demo we are using Entity Framework version 4.1.&lt;/li&gt;
	&lt;/ul&gt;
		&lt;img src="http://www.rssbus.com/kb/articles/ado-codefirst-qb-1.png" /&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 4:&lt;/b&gt; Add a new .cs file to the project and add a class to it. This will be your database context, and it will extend the DbContext class. You will also need to override the OnModelCreating method and remove PluralizaingTableNameConvention and IncludeMetadataConvention from the ModelBuilder Conventions:&lt;/li&gt;
  &lt;/ul&gt;
  
 &lt;code lang="csharp"&gt;&lt;pre&gt;protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
    // To remove the plural names
            
    modelBuilder.Conventions.Remove&amp;lt;PluralizingTableNameConvention&amp;gt;();
    // To remove calls to EdmTable a metadata table.
    // If this is not removed EF will try to describe and select from EdmTable
    modelBuilder.Conventions.Remove&amp;lt;IncludeMetadataConvention&amp;gt;();
 }&lt;/pre&gt;&lt;/code&gt;
  
  &lt;ul&gt;
		&lt;li&gt;&lt;b&gt;Step 5:&lt;/b&gt; Create another .cs file and name it after the QuickBooks entity you are retrieving. In our example, we are retrieving Accounts. In this file you will need to define both the Entity and the Entity Configuration. They will look something like this:&lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang="csharp"&gt;&lt;pre&gt;public class Accounts {

	[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public System.String ID { get; set; }
    public System.String Name { get; set; }
    public System.String Type { get; set; } 
    public System.Double Balance { get; set; }
    public System.DateTime TimeCreated { get; set; }
}
    
public class AccountMap : EntityTypeConfiguration&amp;lt;Accounts&amp;gt; 
{
	public AccountMap() {
        this.ToTable("Accounts");
        this.HasKey(Account =&amp;gt; Account.ID);
        this.Property(Account =&amp;gt; Account.Name);
        this.Property(Account =&amp;gt; Account.Type);
        this.Property(Account =&amp;gt; Account.Balance);
        this.Property(Account =&amp;gt; Account.TimeCreated);
    }&lt;/pre&gt;&lt;/code&gt;
	
	&lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 6:&lt;/b&gt; Now that you have created an entity, go back to your context class and add the entity to your Context like so:&lt;/li&gt;
  &lt;/ul&gt;
  
&lt;code lang="csharp"&gt;&lt;pre&gt;public DbSet&amp;lt;Accounts&amp;gt; Account { set; get; }&lt;/pre&gt;&lt;/code&gt;
  
	&lt;ul&gt;
        &lt;li&gt;&lt;b&gt;Step 7:&lt;/b&gt; With the context and entity finished, you are now read to query the data in a separate class. For example: &lt;/li&gt;
	&lt;/ul&gt;
	
&lt;code lang="csharp"&gt;&lt;pre&gt;QuickBooksContext context = new QuickBooksContext();
var query = from line in context.Account select line;&lt;/pre&gt;&lt;/code&gt;
	
	&lt;h3 class="blue"&gt;Sample Project&lt;/h3&gt;
	&lt;p&gt;
	   To help you get started using the QuickBooks Data Provider with Entity Framework code first approach, download the fully functional 
		&lt;a href="http://www.rssbus.com/kb/articles/ado-codefirst-qb.zip"&gt;sample project&lt;/a&gt;. The project includes examples of selecting, inserting, updating, and deleting data from QuickBooks.
    You will also need the QuickBooks ADO.NET Data Provider to make the connection. You can download a &lt;a href="http://www.rssbus.com/ado/quickbooks"&gt;free trial here&lt;/a&gt;.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/dataintegration/aggbug/149684.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/nZZ8u3fiIwE" height="1" width="1"/&gt;</description><dc:creator>dataintegration</dc:creator><feedburner:origLink>http://geekswithblogs.net/dataintegration/archive/2012/05/18/accessing-quickbooks-with-entity-framework.aspx</feedburner:origLink></item><item><title>Finding your Office Key</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/xLOEmX66I4c/finding-your-office-key.aspx</link><pubDate>Fri, 18 May 2012 09:35:58 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-office-key.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/149683.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/149683.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-office-key.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/149683.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Finding your Office Key</source><description>Following on from my previous post, I needed also to get my key for Microsoft Office. I found &lt;a target="_blank" href="http://www.magicaljellybean.com/keyfinder/"&gt;http://www.magicaljellybean.com/keyfinder/&lt;/a&gt;, downloaded it and run it. &lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/149683.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/xLOEmX66I4c" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-office-key.aspx</feedburner:origLink></item><item><title>Finding your Windows Licence Key</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/iEFU7maXYpI/finding-your-windows-licence-key.aspx</link><pubDate>Fri, 18 May 2012 09:25:55 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-windows-licence-key.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/149682.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/149682.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-windows-licence-key.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/149682.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Finding your Windows Licence Key</source><description>One of the problems that I face is having to periodically rebuild my development PCs. When preparing for a re-build it is important to plan on having the right licence key to hand, and a complete list of programs to install. It also helps if like me you keep downloaded installs in a known place as that make re-installation very easy.&lt;br /&gt;&lt;br /&gt;So given that I have a number of licence keys for Windows 7 Ultimate, how did I find the one that was used for this PC? I located a very useful article at &lt;a target="_blank" href="http://pcsupport.about.com/od/productkeysactivation/ht/windows-7-key.htm"&gt;http://pcsupport.about.com/od/productkeysactivation/ht/windows-7-key.htm&lt;/a&gt;. This led me to Win Key Finder at &lt;a target="_blank" temp_href="http://www.winkeyfinder.com/download/func-showdown/14/ " href="http://www.winkeyfinder.com/download/func-showdown/14/%20"&gt;http://www.winkeyfinder.com/download/func-showdown/14/ &lt;br /&gt;&lt;/a&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/149682.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/iEFU7maXYpI" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/finding-your-windows-licence-key.aspx</feedburner:origLink></item><item><title>www.utnt.tk</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/n8ehbQy2LyY/149681.aspx</link><pubDate>Fri, 18 May 2012 08:53:13 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Umesh/archive/2012/05/18/149681.aspx</guid><wfw:comment>http://geekswithblogs.net/Umesh/comments/149681.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Umesh/comments/commentRss/149681.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Umesh/archive/2012/05/18/149681.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Umesh/services/trackbacks/149681.aspx</trackback:ping><source url="http://geekswithblogs.net/Umesh/rss.aspx">www.utnt.tk</source><description>&lt;img style="-webkit-user-select: none; " src="http://www.dot.tk/images.v2/logo.png" width="150" height="80" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;short url for my blog address. hehe..&lt;/div&gt; &lt;img src="http://geekswithblogs.net/Umesh/aggbug/149681.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/n8ehbQy2LyY" height="1" width="1"/&gt;</description><dc:creator>Thota Umesh</dc:creator><feedburner:origLink>http://geekswithblogs.net/Umesh/archive/2012/05/18/149681.aspx</feedburner:origLink></item><item><title>Storm - A utility for testing Web Services</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/sT_GzA81sEY/storm---a-utility-for-testing-web-services.aspx</link><pubDate>Fri, 18 May 2012 07:40:11 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2012/05/18/storm---a-utility-for-testing-web-services.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/149680.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/149680.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/storm---a-utility-for-testing-web-services.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/149680.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Storm - A utility for testing Web Services</source><description>At &lt;a target="_blank" href="http://storm.codeplex.com/"&gt;http://storm.codeplex.com/&lt;/a&gt; there is a free tool for testing Web Services and WCF services.&lt;br /&gt;&lt;br /&gt;STORM allows you to&lt;br /&gt;  1. Test web services written using any technology (.NET , Java, etc.)&lt;br /&gt;  2. Dynamically invoke web service methods even those that have input parameters of complex data types&lt;br /&gt;  3. Save development time and money.  Creating throw-away test client apps just to test the web service is just too wasteful &lt;br /&gt;  4.  Test multiple web services from within one UI.&lt;br /&gt;  5.  Edit/Manipulate the raw soap requests.&lt;br /&gt;  6  Others (Try out the tool and find out yourself!)&lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/149680.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/sT_GzA81sEY" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2012/05/18/storm---a-utility-for-testing-web-services.aspx</feedburner:origLink></item><item><title>Choosing the right site template - SharePoint 2010</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/_JnT5TziCBA/choosing-the-right-site-template---sharepoint-2010.aspx</link><pubDate>Fri, 18 May 2012 04:02:50 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/choosing-the-right-site-template---sharepoint-2010.aspx</guid><wfw:comment>http://geekswithblogs.net/KunaalKapoor/comments/149679.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/KunaalKapoor/comments/commentRss/149679.aspx</wfw:commentRss><comments>http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/choosing-the-right-site-template---sharepoint-2010.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/KunaalKapoor/services/trackbacks/149679.aspx</trackback:ping><source url="http://geekswithblogs.net/KunaalKapoor/rss.aspx">Choosing the right site template - SharePoint 2010</source><description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;a title="SharePoint 2010" href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx" rel="SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt; provides a number of templates for creating new sites. Most organizations will decide for you which SharePoint templates you're going to use; it’s usually either a Team Site template or a Publishing Site template. The other templates are specialized.&lt;/font&gt;&lt;/p&gt;

&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;&lt;font face="Arial"&gt;Product&lt;/font&gt;&lt;/th&gt;
&lt;th&gt;&lt;font face="Arial"&gt;Available Site Templates&lt;/font&gt;&lt;/th&gt;
&lt;th&gt;&lt;font face="Arial"&gt;Typical Usage Scenarios&lt;/font&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font face="Arial"&gt;SharePoint Foundation 2010&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Team Site, Meeting Workspace, Blog&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;More people contribute content than read it; also when you want
basic layouts&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font face="Arial"&gt;SharePoint Server 2010, Standard license; and &lt;a title="SharePoint 2010" href="http://sharepoint.microsoft.com/en-us/Pages/default.aspx" rel="SharePoint 2010"&gt;SharePoint 2010&lt;/a&gt;
for Internet Sites, Standard&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Publishing Portal&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Web content management sites, such as portals&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Enterprise Wiki&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Collaborative sites with Web content management
requirements&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Document Center&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Sample template to demonstrate SharePoint’s document
management features&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Basic and Enterprise Search Centers&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Site dedicated to displaying search results&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;My Site Host&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Site dedicated to hosting My Site&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;font face="Arial"&gt;SharePoint Server 2010, Enterprise License*; and SharePoint
Server 2010 for Internet Sites, Enterprise&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Records Center&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Used for managing document lifecycles&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Performance Point Site&lt;/font&gt;&lt;/td&gt;
&lt;td&gt;&lt;font face="Arial"&gt;Used for creating business intelligence dashboards&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;font face="Arial"&gt;*Includes additional Web Parts and services to support advanced enterprise requirements&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;There are several others which you can read more about on: http://technet.microsoft.com/en-us/library/cc262410.aspx&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;You can convert a team/blank site to a publishing too.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;Usually the best thing to do is to go with a blank site and control all features that you turn on. But the main point is that one should know which site template should be chosen to suffice all the requirements of the site. If you will not be using any of the Publishing feature set, then there is no particular reason, to use a Publishing site it should always be based on your list of goals&lt;/font&gt;&lt;span style="font-family: Arial; "&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;All of the features used by a Publishing site are availalble in a Team Site as well.  They just aren't turned on by default.  You can still use the OOB approval workflows in a team site.  However, they aren't integrated with normal web part pages so if you want to use them to control publishing of content you need to turn on the publishing features.  You can still do that even if you start with a Team site template.  They just aren't turned on by default. There is no particular reason not to use a Team site for an Internet facing site.  I frequently start with a Blank site so that I can control all the features and whether they are turned on or off.&lt;/font&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/KunaalKapoor/aggbug/149679.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/_JnT5TziCBA" height="1" width="1"/&gt;</description><dc:creator>KunaalKapoor</dc:creator><feedburner:origLink>http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/choosing-the-right-site-template---sharepoint-2010.aspx</feedburner:origLink></item><item><title>Deleting duplicated fields from the Form Library's content type, created due to multiple publish attempts on InfoPath 2010</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/Auy1sqiwyLM/deleting-duplicated-fields-from-the-form-librarys-content-type-created.aspx</link><pubDate>Fri, 18 May 2012 03:28:59 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/deleting-duplicated-fields-from-the-form-librarys-content-type-created.aspx</guid><wfw:comment>http://geekswithblogs.net/KunaalKapoor/comments/149678.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/KunaalKapoor/comments/commentRss/149678.aspx</wfw:commentRss><comments>http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/deleting-duplicated-fields-from-the-form-librarys-content-type-created.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/KunaalKapoor/services/trackbacks/149678.aspx</trackback:ping><source url="http://geekswithblogs.net/KunaalKapoor/rss.aspx">Deleting duplicated fields from the Form Library's content type, created due to multiple publish attempts on InfoPath 2010</source><description>&lt;div&gt;&lt;font face="Arial"&gt;If you did not pay attention to the last step before publishing an InfoPath 2010 &lt;/font&gt;&lt;span style="font-family: Arial; "&gt;form to a SharePoint server and you are facing a lot of problems because the publish created duplicate columns. Look no further, this post will make your life easier.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;A lot of us use&lt;/span&gt;&lt;span style="font-family: Arial; "&gt; InfoPath and have to deal with its annoying bugs day in and day out. But we just have to be more careful and aware to avoid any situations where there's no second option.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;Today, I was working with an InfoPath form, and was converting a regular form to an administratively approved one. I ended up publishing the form a couple of times to my production server which in turn was afflicted by the “duplicate promoted fields / properties” issue, or in easier terms 'duplicate columns' which seems to want to randomly occur when you add / modify new promoted fields. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Arial; "&gt;Just before you publish the form, InfoPath gives you an option of only publishin&lt;/span&gt;&lt;font face="Arial"&gt;g/recreating the columns that have been modified/added. And it is very important that we update the type of operation on each column. The columns can be site columns, list columns or just stranded doing nothing but making your life miserable depending on how you publish. &lt;/font&gt;&lt;span style="font-family: Arial; "&gt;In mycase, instead of reusing the promoted properties it already created for use on the SharePoint site, InfoPath decided to create you a whole new set of Site columns to use.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;Normally this is fine, if only a little annoying – but we were using those forms in conjunction with some workflows, which were relying on those promoted fields to have a consistent name…so this now needed to be fixed. The main point of the workflow not picking up the right columns is that they are bound by column id's. So the workflow would be bound to a column which will never be updated with a value because it's source (in my case the InfoPath itself) updates another column with the same name but different GUID.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;InfoPath forms are a lot like other MS file formats and are based around a cabinet file / .cab; so the steps I took the following steps to remove the duplicate fields:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;1) Rename my form to .cab&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;2) Extract everything, and open manifest.xsf in notepad&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;3) Find the offending duplicate columns, and remove them. You’ll find them within a block similar to &amp;lt;xsf2:listPropertiesExtension&amp;gt; (though the namespace might be different):&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;If you aren’t sure which ones to remove, you can always compare the columnName property in the &amp;lt;fieldExtension&amp;gt; with the columnName property in the &amp;lt;xsf:field/&amp;gt; near the bottom of the manifest.xsf file.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;4) Repack the cabinet – you could use IZarc you can actually open the mainfest.xsf using InfoPath designer (right click and select Design) and then “save as” .xsn, bypassing the fiddly cab creation step.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;Once you redeploy / update the form, everything should now be fixed! If you were using the form on a document library, it’s likely you won’t be able to remove the site columns – I ended up recreating the document library to refresh everything but you may not have this luxury if you’ve already got live data in there. So if you're library can't be deleted because there's data in it or it is bound to a List WorkFlow (Never use List WF's, always use reusable WF's), then there is one and only one resort! SHAREPOINT MANAGER 2010. &lt;a href="http://spm.codeplex.com/" title="Found Here" target="_blank"&gt;http://tempuri.org/tempuri.html&lt;/a&gt;.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;Install it on the SP server and delete each duplicated and any other InfoPath related column you have associated with the library. Once there are no traces of InfoPath columns, delete the content type. And republish the form to the server/library. And add the content type for the library again.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;Maybe Office 15 will fix all this, but until then make sure you keep your eyes open while working on InfoPath.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="Arial"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/KunaalKapoor/aggbug/149678.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/Auy1sqiwyLM" height="1" width="1"/&gt;</description><dc:creator>KunaalKapoor</dc:creator><feedburner:origLink>http://geekswithblogs.net/KunaalKapoor/archive/2012/05/17/deleting-duplicated-fields-from-the-form-librarys-content-type-created.aspx</feedburner:origLink></item><item><title>C#/.NET Little Wonders: Select() and Where() with Indexes</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/HZVrwktEfkI/c.net-little-wonders-select-and-where-with-indexes.aspx</link><pubDate>Thu, 17 May 2012 17:11:35 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BlackRabbitCoder/archive/2012/05/17/c.net-little-wonders-select-and-where-with-indexes.aspx</guid><wfw:comment>http://geekswithblogs.net/BlackRabbitCoder/comments/149677.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BlackRabbitCoder/comments/commentRss/149677.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BlackRabbitCoder/archive/2012/05/17/c.net-little-wonders-select-and-where-with-indexes.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BlackRabbitCoder/services/trackbacks/149677.aspx</trackback:ping><source url="http://geekswithblogs.net/BlackRabbitCoder/rss.aspx">C#/.NET Little Wonders: Select() and Where() with Indexes</source><description>&lt;div style="float: right"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "ca-pub-0591047544853326";
/* Inline 2 */
google_ad_slot = "1318145269";
google_ad_width = 300;
google_ad_height = 250;
//--&gt;&lt;/script&gt;&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;&lt;/script&gt;&lt;ins style="position: relative; border-bottom-style: none; padding-bottom: 0px; margin: 0px; border-left-style: none; padding-left: 0px; width: 300px; padding-right: 0px; display: inline-table; border-top-style: none; height: 250px; visibility: visible; border-right-style: none; padding-top: 0px"&gt;&lt;ins style="position: relative; border-bottom-style: none; padding-bottom: 0px; margin: 0px; border-left-style: none; padding-left: 0px; width: 300px; padding-right: 0px; display: block; border-top-style: none; height: 250px; visibility: visible; border-right-style: none; padding-top: 0px" id="aswift_0_anchor"&gt;&lt;iframe style="position: absolute; top: 0px; left: 0px" id="aswift_0" onload="var i=this.id,s=window.google_iframe_oncopy,H=s&amp;amp;&amp;amp;s.handlers,h=H&amp;amp;&amp;amp;H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&amp;amp;&amp;amp;d&amp;amp;&amp;amp;(!d.body||!d.body.firstChild)){if(h.call){i+='.call';setTimeout(h,0)}else if(h.match){i+='.nav';w.location.replace(h)}s.log&amp;amp;&amp;amp;s.log.push(i)}" height="250" marginheight="0" frameborder="0" width="300" allowtransparency="allowtransparency" name="aswift_0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/ins&gt;&lt;/ins&gt;&lt;/div&gt;  &lt;p&gt;&lt;em&gt;Once again, in this series of posts I look at the parts of the .NET Framework that may seem trivial, but can help improve your code by making it easier to write and maintain. The index of all my past little wonders posts can be found &lt;a href="http://blackrabbitcoder.net/archive/2011/10/24/c.net-little-wonders-the-complete-collection-again.aspx"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;We’ve talked about the &lt;strong&gt;Select()&lt;/strong&gt; and &lt;strong&gt;Where()&lt;/strong&gt; LINQ extension methods before.  The &lt;strong&gt;Select()&lt;/strong&gt; method lets you project from the source type to a new type, and the &lt;strong&gt;Where()&lt;/strong&gt; method lets you filter the list of items to the ones you are interested in.  &lt;/p&gt;  &lt;p&gt;Most people know of these methods in their simplest form, where they simply take a projection and predicate respectively that operates on just an element.  However, there are overloads for both of these methods that take a delegate that operates on both the element and the index of the element.&lt;/p&gt;  &lt;p&gt;So let’s take a look at these and see what we can do with them.&lt;/p&gt;  &lt;h3&gt;Select() – Projects elements&lt;/h3&gt;  &lt;p&gt;The &lt;strong&gt;Select() &lt;/strong&gt;method is responsible for projecting a sequence into a new sequence which may or may not be different types and/or values.&lt;/p&gt;  &lt;p&gt;As an extension method, it’s most common form is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Select(Func&amp;lt;T, TResult&amp;gt; projection)&lt;/strong&gt;       &lt;ul&gt;       &lt;li&gt;&lt;em&gt;Projects the &lt;/em&gt;&lt;strong&gt;source&lt;/strong&gt;&lt;em&gt; sequence into a new resulting sequence consisting of the results of each item passed through the &lt;/em&gt;&lt;strong&gt;projection&lt;/strong&gt; &lt;em&gt;delegate.&lt;/em&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As you know, this gives us a lot of power, we can use it to change values (and keep types the same):&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// an array of 1 to 10&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = Enumerable.Range(1, 10).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// converts to an array of 2, 4, 6, ..., 20&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var doubles = numbers.Select(i =&amp;gt; i*2).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;So that’s an example of a projection that changes the values, you can also project to a different type:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// the numbers from 1 to 10&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = Enumerable.Range(1, 10).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// project to list of strings "1: ", "2: ", ...&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var lineNumbers = numbers.Select(i =&amp;gt; i.ToString() + &lt;span style="color: #006080"&gt;": "&lt;/span&gt;).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Now that we’ve reviewed the basic form, let’s look at a lesser-used overload of &lt;strong&gt;Select():&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Select(Func&amp;lt;T, int, TResult&amp;gt; projection)&lt;/strong&gt; 

    &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;Projects the &lt;/em&gt;&lt;strong&gt;source &lt;/strong&gt;&lt;em&gt;sequence into a new resulting sequence consisting of the results of each item&lt;/em&gt; &lt;strong&gt;and its index in source&lt;/strong&gt;&lt;em&gt; passed through the&lt;/em&gt; &lt;strong&gt;projection&lt;/strong&gt;&lt;em&gt; delegate.&lt;/em&gt; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note the difference here: in this overload the delegate takes not just an element, but an element and the &lt;em&gt;index&lt;/em&gt; of that element in the source sequence this method is invoked upon.&lt;/p&gt;

&lt;p&gt;Thus, if you had a list of items and wanted to take advantage of the item’s index as well in the projection, you can:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// say that racers consists of the names of racers in the order of finish:&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; IEnumerable&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&amp;gt; racers = ...;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// get a projection of new objects consisting of placing and name&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var finishers = racers.Select((r, index) =&amp;gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { Place = index, Name = r }).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The code snippet above will take a sequence of &lt;strong&gt;string&lt;/strong&gt; and convert it into a list of anonymous objects representing the racer’s name and their place.  So given this form of the &lt;strong&gt;Select()&lt;/strong&gt;, you can use the index as part of the projection and either store it, or use it to build a new value.&lt;/p&gt;

&lt;p&gt;One very important note, the &lt;em&gt;index &lt;/em&gt;provided to the projection is the index from the sequence the &lt;strong&gt;Select()&lt;/strong&gt; was immediately called from.  This is an important distinction because you can chain together multiple operations which may alter the number of items in the sequence (or their order) before the &lt;strong&gt;Select()&lt;/strong&gt; is invoked.  This is very similar to the way that &lt;a href="http://blackrabbitcoder.net/archive/2012/03/29/c.net-little-wonders-skip-and-take.aspx"&gt;Skip() and Take() (click here for a discussion of these two methods)&lt;/a&gt; work with their index overloads.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// fibs under 100&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;[] { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// even fibs and their indexes?&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var evenFibs = numbers&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     .Where(f =&amp;gt; (f % 2) == 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     .Select((f, index) =&amp;gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { Number = f, Index = index })&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     .ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So looking at this code, you might think you’d get a list that contains Number = 2 at Index = 2, Number = 8 at Index 5, and Number = 34 at Index 8.  But instead you’ll get Number = 2 at Index = 0, Number = 8 at Index = 1, and Number = 34 at Index = 2.&lt;/p&gt;

&lt;p&gt;Why?  Because remember that the &lt;strong&gt;Where()&lt;/strong&gt; filters the sequence from (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89) down to just a sequence of the evens (2, 8, 34) and &lt;em&gt;that&lt;/em&gt; is the sequence the &lt;strong&gt;Select()&lt;/strong&gt; is operating on, thus that sequence is the one who’s indexes are used.  Make sense?  The &lt;strong&gt;Where() &lt;/strong&gt;returns a new, shorter sequence, and that is the sequence that &lt;strong&gt;Select()&lt;/strong&gt; uses for its elements and what it bases the indexes from.&lt;/p&gt;

&lt;p&gt;So, how would you get the results with the original indexes?  Well, one way would be to perform the &lt;strong&gt;Select()&lt;/strong&gt; first, and then filter the results with the &lt;strong&gt;Where()&lt;/strong&gt; second:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// fibs under 100&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;[] { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// yes, this works...&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var evenFibs = numbers&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     .Select((f, index) =&amp;gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; { Number = f, Index = index })&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     .Where(r =&amp;gt; (r.Number % 2) == 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     .ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So this one first projects the sequence into a sequence of an anonymous type holding both the number and the index, and then it filters down to only the those that have an even number.&lt;/p&gt;

&lt;h3&gt;Where() – filters elements&lt;/h3&gt;

&lt;p&gt;As you know, &lt;strong&gt;Where()&lt;/strong&gt; filters based on a predicate.  It’s basic form is:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Where(Func&amp;lt;T, bool&amp;gt; predicate)&lt;/strong&gt; 

    &lt;ul&gt;
      &lt;li&gt;&lt;em&gt;Filters the &lt;/em&gt;&lt;strong&gt;source &lt;/strong&gt;&lt;em&gt;sequence to a new sequence that contains only elements that return &lt;/em&gt;&lt;strong&gt;true &lt;/strong&gt;&lt;em&gt;from the &lt;/em&gt;&lt;strong&gt;predicate&lt;/strong&gt;&lt;em&gt;&lt;strong&gt; &lt;/strong&gt;applied to each element.&lt;/em&gt; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, of course, as you’ve seen in the examples above, we can use &lt;strong&gt;Where()&lt;/strong&gt; to filter a sequence of numbers to just the evens:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// 1 through 10&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = Enumerable.Range(1, 10);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// 2, 4, 6, 8, 10&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var evens = numbers.Where(n =&amp;gt; (n % 2) == 0).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Just like &lt;strong&gt;Select(), &lt;/strong&gt;the &lt;strong&gt;Where()&lt;/strong&gt; extension method also has an overload that takes passes an index to the predicate:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Where(Func&amp;lt;T, int, bool&amp;gt; predicate)&lt;/strong&gt; &lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;&lt;em&gt;Filters the &lt;/em&gt;&lt;strong&gt;source&lt;/strong&gt;&lt;em&gt; sequence to a new sequence that contains only elements that return &lt;/em&gt;&lt;strong&gt;true&lt;/strong&gt;&lt;em&gt; from the &lt;/em&gt;&lt;strong&gt;predicate &lt;/strong&gt;&lt;em&gt;applied to each element &lt;/em&gt;&lt;strong&gt;and its index in source.&lt;/strong&gt; F&lt;/li&gt;
  &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;For example, let’s say you wanted to pull every other item in a sequence, you could do this with the overload:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// fibs under 100&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var numbers = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt;[] { 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 };&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// get every other fib number &lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; var everyOtherFib = numbers.Where((n, index) =&amp;gt; (index % 2) == 0).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The resulting sequence from the above will yield (1, 2, 5, 13, 34, 89).  These may seem like trivial uses, but you could also use them to coordinate across sequences.  For example, let’s say you kick off multiple service requests in various threads, and have an array of &lt;strong&gt;bool&lt;/strong&gt; representing whether the results came back successfully, we could filter the requests to get the list of failed requests:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;[] wasSuccessful = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; ...;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #008000"&gt;// get the list of requests that had bad return codes:&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; var failedRequests = requests.Where((r, index) =&amp;gt; !wasSuccessful[index]).ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So the code above goes through the requests, takes the index of each request, and checks to see if &lt;strong&gt;wasSuccessful&lt;/strong&gt; at that same index is &lt;strong&gt;false.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, once again it is important to note that the index passed to the &lt;strong&gt;Where()&lt;/strong&gt; clause is the index of the item in the sequence &lt;strong&gt;Where()&lt;/strong&gt; is immediately called upon.  So, once again, if you need the index of the item in the original sequence, make sure that none of the clauses before your indexed &lt;strong&gt;Select(), Where(), Skip(), &lt;/strong&gt;or &lt;strong&gt;Take()&lt;/strong&gt; alter the sequence by re-ordering, adding, or removing items.&lt;/p&gt;

&lt;h3&gt;Sidebar: Naming style for index?&lt;/h3&gt;

&lt;p&gt;When you use the form of &lt;strong&gt;Select(), Where(), Skip(), &lt;/strong&gt;or &lt;strong&gt;Take()&lt;/strong&gt; where you provide a lambda expression that takes an index, it is often useful to name the lambda variables such that it’s clear which item is the index.  &lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Ummm, is j the number and k the index?  or vice-versa...?&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var evenFibs = numbers&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     .Where((j, k) =&amp;gt; (k % 2) == 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     .ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;In the code above, because &lt;strong&gt;j&lt;/strong&gt; and &lt;strong&gt;k&lt;/strong&gt; don’t really have any derivable meaning from the context, we have to know from experience (or Intellisense) that &lt;strong&gt;k&lt;/strong&gt; is the index.  However, many folks reading this code may not know that.&lt;/p&gt;

&lt;p&gt;This is why typically, and this is just my personal style, I like to name the index variable explicitly &lt;strong&gt;index, &lt;/strong&gt;or at least &lt;strong&gt;x&lt;/strong&gt; so it’s fairly clear that we’re talking about an index and not the value:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;// Ah... it was the index!&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; var evenFibs = numbers&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     .Where((j, index) =&amp;gt; (index % 2) == 0)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     .ToList();&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Summary&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;Select()&lt;/strong&gt; and &lt;strong&gt;Where()&lt;/strong&gt; LINQ extension methods provide powerful ways to manipulate lists.  The &lt;strong&gt;Select()&lt;/strong&gt; clause is great for projecting from one sequence to another sequence containing different types/values, and the &lt;strong&gt;Where()&lt;/strong&gt; clause is useful for filtering a sequence down to only those that match a given predicate.  Both of these extension methods allow you to not only project and filter based on each element in the sequence, but also based on the element’s index in the sequence.  Care should be taken to realize that the index of the item may be altered by chained expressions.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8acfbf44-1921-4711-9044-104b014bd887" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/C%23" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CSharp" rel="tag"&gt;CSharp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Little+Wonders" rel="tag"&gt;Little Wonders&lt;/a&gt;,&lt;a href="http://technorati.com/tags/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Where" rel="tag"&gt;Where&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Select" rel="tag"&gt;Select&lt;/a&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/BlackRabbitCoder/aggbug/149677.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/HZVrwktEfkI" height="1" width="1"/&gt;</description><dc:creator>James Michael Hare</dc:creator><feedburner:origLink>http://geekswithblogs.net/BlackRabbitCoder/archive/2012/05/17/c.net-little-wonders-select-and-where-with-indexes.aspx</feedburner:origLink></item><item><title>Pinning any folder location to the task bar Explorer jump list</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/1NqlYddoUag/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx</link><pubDate>Thu, 17 May 2012 20:33:12 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx</guid><wfw:comment>http://geekswithblogs.net/jeremyj/comments/149676.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jeremyj/comments/commentRss/149676.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/jeremyj/services/trackbacks/149676.aspx</trackback:ping><source url="http://geekswithblogs.net/jeremyj/rss.aspx">Pinning any folder location to the task bar Explorer jump list</source><description>This might not be news to you but for me this was a discovery i made only this week, yes how did i not know this before! &lt;br /&gt;&lt;br /&gt;So I discovered how to pin any folder to the Windows Explorer jump list on the Windows 7 task bar. Any entries in the 'Frequent' menu can be pinned using its context menu, but a folder that does not appear in the 'Frequent' menu can still be pinned just by dragging its path from the address bar in the Explorer window onto the task bar icon. The pinned folders can then be accessed by using the context menu of the task bar button.&lt;br /&gt;&lt;br /&gt;Actually for a few years now i've been in the habit of pinning frequently accessed folder locations into the Favorites list in the navigation pane, when using XP and also Windows 7. Perhaps my habits formed with Windows XP using folders pinned to the 
Favorites list in the navigation pane combined with task bar Toolbar 
folders is the reason why so much time spent using Windows 7 has gone by
 without without me using this handy feature, but now instead of adding a Toolbar folder i can just pin my RDP folder (and other folders like the SysinternalsSuite) to the Explorer jump list instead.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;img src="http://geekswithblogs.net/jeremyj/aggbug/149676.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/1NqlYddoUag" height="1" width="1"/&gt;</description><dc:creator>jeremyj</dc:creator><feedburner:origLink>http://geekswithblogs.net/jeremyj/archive/2012/05/17/pinning-any-folder-location-to-the-task-bar-explorer-jump-list.aspx</feedburner:origLink></item><item><title>Enum helper for values specified in attributes</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/4jTQy4hqjrw/149675.aspx</link><pubDate>Thu, 17 May 2012 14:06:43 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/wojan/archive/2012/05/17/149675.aspx</guid><wfw:comment>http://geekswithblogs.net/wojan/comments/149675.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/wojan/comments/commentRss/149675.aspx</wfw:commentRss><comments>http://geekswithblogs.net/wojan/archive/2012/05/17/149675.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/wojan/services/trackbacks/149675.aspx</trackback:ping><source url="http://geekswithblogs.net/wojan/rss.aspx">Enum helper for values specified in attributes</source><description>&lt;p&gt;I've used this enum helper from time to time to get an enum value from attributes such as Description and XmlEnumAttribute.  Maybe you can find it useful? &lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;EnumEx&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; T
GetXmlEnumValue&amp;lt;T&amp;gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt; name)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; type = CheckEnum&amp;lt;T&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; val = (&lt;span style="color: blue;"&gt;from&lt;/span&gt; f &lt;span style="color: blue;"&gt;in&lt;/span&gt; type.GetFields()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;         &lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;              &lt;/span&gt;&lt;span style="color: blue;"&gt;let&lt;/span&gt;
attribute = f.GetCustomAttributes(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(System.Xml.Serialization.&lt;span style="color: rgb(43, 145, 175);"&gt;XmlEnumAttribute&lt;/span&gt;), &lt;span style="color: blue;"&gt;true&lt;/span&gt;).FirstOrDefault()
&lt;span style="color: blue;"&gt;as&lt;/span&gt; System.Xml.Serialization.&lt;span style="color: rgb(43, 145, 175);"&gt;XmlEnumAttribute&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                       &lt;/span&gt;&lt;span style="color: blue;"&gt;where&lt;/span&gt;
attribute != &lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                          &lt;/span&gt;&amp;amp;&amp;amp; attribute.Name
== name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                       &lt;/span&gt;&lt;span style="color: blue;"&gt;select&lt;/span&gt;
(T)f.GetValue(&lt;span style="color: blue;"&gt;null&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (val.Count() == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;               
&lt;/span&gt;&lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;/span&gt;&lt;span style="color: mediumseagreen;"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt; is not a valid XmlEnumAttribute for &lt;/span&gt;&lt;span style="color: mediumseagreen;"&gt;{1}&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;/span&gt;,
name, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(T).FullName), &lt;span style="color: rgb(163, 21, 21);"&gt;"name"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; val.First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; T
GetValueFromDescription&amp;lt;T&amp;gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;
description)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; type = CheckEnum&amp;lt;T&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; val = (&lt;span style="color: blue;"&gt;from&lt;/span&gt; f &lt;span style="color: blue;"&gt;in&lt;/span&gt; type.GetFields()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                       &lt;/span&gt;&lt;span style="color: blue;"&gt;let&lt;/span&gt;
attribute = f.GetCustomAttributes(&lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(System.ComponentModel.&lt;span style="color: rgb(43, 145, 175);"&gt;DescriptionAttribute&lt;/span&gt;), &lt;span style="color: blue;"&gt;true&lt;/span&gt;).FirstOrDefault()
&lt;span style="color: blue;"&gt;as&lt;/span&gt; System.ComponentModel.&lt;span style="color: rgb(43, 145, 175);"&gt;DescriptionAttribute&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                       &lt;/span&gt;where attribute != &lt;span style="color: blue;"&gt;null&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                          &lt;/span&gt;&amp;amp;&amp;amp;
attribute.Description == description&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;                       &lt;/span&gt;select (T)f.GetValue(&lt;span style="color: blue;"&gt;null&lt;/span&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (val.Count() == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;               
&lt;/span&gt;&lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;ArgumentException&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;/span&gt;&lt;span style="color: mediumseagreen;"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt; is not a valid description for &lt;/span&gt;&lt;span style="color: mediumseagreen;"&gt;{1}&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;/span&gt;,
description, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(T).FullName), &lt;span style="color: rgb(163, 21, 21);"&gt;"description"&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; val.First();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;Type&lt;/span&gt; CheckEnum&amp;lt;T&amp;gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;var&lt;/span&gt; type = &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(T);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (type.IsEnum == &lt;span style="color: blue;"&gt;false&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;               
&lt;/span&gt;&lt;span style="color: blue;"&gt;throw&lt;/span&gt; &lt;span style="color: blue;"&gt;new&lt;/span&gt;
&lt;span style="color: rgb(43, 145, 175);"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color: rgb(163, 21, 21);"&gt;"&lt;/span&gt;&lt;span style="color: mediumseagreen;"&gt;{0}&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt; is not an
enum"&lt;/span&gt;, &lt;span style="color: blue;"&gt;typeof&lt;/span&gt;(T)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;            &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; type;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;        &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;" class="MsoNormal"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&lt;span style="mso-spacerun: yes;"&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p style="margin: 0in 0in 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;o:p&gt;&lt;font face="Calibri"&gt; &lt;/font&gt;&lt;/o:p&gt;&lt;/p&gt;

 &lt;img src="http://geekswithblogs.net/wojan/aggbug/149675.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/4jTQy4hqjrw" height="1" width="1"/&gt;</description><dc:creator>Scott Wojan</dc:creator><feedburner:origLink>http://geekswithblogs.net/wojan/archive/2012/05/17/149675.aspx</feedburner:origLink></item><item><title>Social Meet up on Twitter for Meet Windows Azure on June 7th</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/TWjtHh03Eyc/social-meet-up-on-twitter-for-meet-windows-azure-on.aspx</link><pubDate>Thu, 17 May 2012 17:31:10 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/hroggero/archive/2012/05/17/social-meet-up-on-twitter-for-meet-windows-azure-on.aspx</guid><wfw:comment>http://geekswithblogs.net/hroggero/comments/149674.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/hroggero/comments/commentRss/149674.aspx</wfw:commentRss><comments>http://geekswithblogs.net/hroggero/archive/2012/05/17/social-meet-up-on-twitter-for-meet-windows-azure-on.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/hroggero/services/trackbacks/149674.aspx</trackback:ping><source url="http://geekswithblogs.net/hroggero/rss.aspx">Social Meet up on Twitter for Meet Windows Azure on June 7th</source><description>&lt;p&gt;Get ready for a cool event on June 7th. Register to watch live (starting at 1PM PDT): &lt;a title="here" href="http://register.meetwindowsazure.com/"&gt;here&lt;/a&gt; – The event will be presented by &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;. To keep updated on this event follow the twitter conversations @WindowsAzure, #MEETAzure, #WindowsAzure.&lt;/p&gt;  &lt;p&gt;You can also register for the &lt;a href="http://lanyrd.com/2012/meetazure/"&gt;social meetup on Twitter&lt;/a&gt; event, organized by &lt;a href="http://www.magnusmartensson.com/post/2012/05/16/Social-meet-up-on-Twitter-for-MEET-Windows-Azure-on-June-7th.aspx"&gt;MVP Magnus Martensson&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I assure you; you don’t want to miss this event…&lt;/p&gt;  &lt;p&gt;MEET Windows Azure Blog Relay:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Roger Jennings (&lt;a href="https://twitter.com/#!/rogerjenn"&gt;@rogerjenn&lt;/a&gt;): &lt;a href="http://oakleafblog.blogspot.se/2012/05/social-meet-up-on-twitter-for-meet.html"&gt;Social meet up on Twitter for Meet Windows Azure on June 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Anton Staykov (&lt;a href="https://twitter.com/#!/astaykov"&gt;@astaykov&lt;/a&gt;): &lt;a href="http://blogs.staykov.net/2012/05/meet-windows-azure-on-june-7th.html"&gt;MEET Windows Azure on June the 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Patriek van Dorp (&lt;a href="https://twitter.com/#!/pvandorp"&gt;@pvandorp&lt;/a&gt;): &lt;a href="http://cloudythoughts.siadis.com/windows-azure/social-meet-up-for-meet-windows-azure-on-june-7th"&gt;Social Meet Up for ‘MEET Windows Azure’ on June 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Marcel Meijer (&lt;a href="https://twitter.com/#!/MarcelMeijer"&gt;@MarcelMeijer&lt;/a&gt;): &lt;a href="http://blogs.msmvps.com/marcelmeijer/blog/2012/05/16/meet-windows-azure-on-june-the-7th/"&gt;MEET Windows Azure on June the 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Nuno (&lt;a href="https://twitter.com/#!/NunoGodinho"&gt;@NunoGodinho&lt;/a&gt;): &lt;a href="http://msmvps.com/blogs/nunogodinho/archive/2012/05/16/social-meet-up-for-meet-windows-azure-on-june-7th.aspx"&gt;Social Meet Up for ‘MEET Windows Azure’ on June 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Shaun Xu (&lt;a href="https://twitter.com/#%21/shaunxu"&gt;@shaunxu&lt;/a&gt;) &lt;a href="http://blogs.shaunxu.me/archive/2012/05/16/letrsquos-meet-windows-azure.aspx"&gt;Let's MEET Windows Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Maarten Balliauw (&lt;a href="http://twitter.com/maartenballiauw"&gt;@maartenballiauw&lt;/a&gt;): &lt;a href="http://blog.maartenballiauw.be/post/2012/05/17/Social-meet-up-on-Twitter-for-MEET-Windows-Azure-on-June-7th.aspx"&gt;Social meet up on Twitter for MEET Windows Azure on June 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Magnus Mårtensson (&lt;a href="http://twitter.com/noopman"&gt;@noopman&lt;/a&gt;): &lt;a href="http://www.magnusmartensson.com/post/2012/05/16/Social-meet-up-on-Twitter-for-MEET-Windows-Azure-on-June-7th.aspx"&gt;Social meet up on Twitter for MEET Windows Azure on June 7th&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Herve Roggero (&lt;a href="http://twitter.com/hroggero"&gt;@hroggero&lt;/a&gt;): &lt;a href="http://geekswithblogs.net/hroggero/archive/2012/05/17/social-meet-up-on-twitter-for-meet-windows-azure-on.aspx"&gt;Social Meet up on Twitter for Meet Windows Azure on June 7th&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;img src="http://geekswithblogs.net/hroggero/aggbug/149674.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/TWjtHh03Eyc" height="1" width="1"/&gt;</description><dc:creator>Herve Roggero</dc:creator><feedburner:origLink>http://geekswithblogs.net/hroggero/archive/2012/05/17/social-meet-up-on-twitter-for-meet-windows-azure-on.aspx</feedburner:origLink></item><item><title>What Makes Online Business Systems a Best Workplace in Canada</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/YQqflhmu-XY/149673.aspx</link><pubDate>Thu, 17 May 2012 18:35:26 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dlussier/archive/2012/05/17/149673.aspx</guid><wfw:comment>http://geekswithblogs.net/dlussier/comments/149673.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dlussier/comments/commentRss/149673.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dlussier/archive/2012/05/17/149673.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/dlussier/services/trackbacks/149673.aspx</trackback:ping><source url="http://geekswithblogs.net/dlussier/rss.aspx">What Makes Online Business Systems a Best Workplace in Canada</source><description>&lt;p&gt;We’re having a shindig at my work today, &lt;a href="http://www.obsglobal.com" target="_blank"&gt;Online Business Systems&lt;/a&gt;, to celebrate &lt;a href="http://greatplacetowork.ca/best-workplaces/best-workplaces-in-canada/606-2012" target="_blank"&gt;making the “Best Workplaces in Canada” list&lt;/a&gt; for the 6th consecutive year. This is a big deal for us, as we put a lot of work and effort into ensuring that our workplace is attractive to top talent, offers fantastic professional development opportunities, and provides challenging &amp;amp; meaningful work.&lt;/p&gt;  &lt;p&gt;I’ve worked at a lot of technology consulting companies in Winnipeg, and I can honestly say that Online is hands down the best employer I’ve had the privilege of working for. Here are some things we do that make us one of the best workplaces in Canada:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Professional Development for Every Employee&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;For a company to grow, it’s employees need to grow. While many companies provide occasional professional development and often require employees to take vacation time, Online takes a different view.&lt;/p&gt;  &lt;p&gt;Every employee gets a PD budget – approx $3,500 – to spend on courses, conferences, training, etc. This budget gets renewed &lt;em&gt;every year&lt;/em&gt;, and while we do have an approval process in place its more to ensure nobody is taking training that is really off base. Also Online provides 5 days of PD time every year. That’s 5 paid days that can be used towards professional development: attending conferences, attending training, taking time off to study for exams, etc.&lt;/p&gt;  &lt;p&gt;And I do mean &lt;em&gt;&lt;u&gt;every&lt;/u&gt;&lt;/em&gt; employee. Whether you’re a billable consultant, a sales professional, or part of the internal administration team, everyone in the company is given the opportunity to further their skills.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Career Mentor Program and Review Process&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We believe that developing someone’s career at Online doesn’t just happen at review time but it should be ongoing throughout the year. We have Career Mentors throughout the company who keep in contact with Onliners in their care to ensure they’re engaged, growing, and happy with their employment at Online. Career Mentors are responsible for reviewing feedback for members of their group and perform annual reviews. &lt;/p&gt;  &lt;p&gt;The benefit of this – instead of one or two people in HR responsible for everyone we take a “it takes a village” approach, which creates stronger personal/professional relationships and helps us identify/deal with any issues or concerns employees have sooner.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;We Foster a Culture of Innovation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At Online we hire great people and give them the freedom to make positive impacts within the company. Ideas can come from anywhere in the company, and are actually encouraged. We’ve set up a program called “Innovation Den”, where Onliners can pitch their idea to our regional management. Ideas that are accepted are given time, budget, resources – whatever was being asked for – to see it come to fruition.&lt;/p&gt;  &lt;p&gt;Innovation doesn’t just happen there though, it can happen anywhere and anytime. I noticed we were going to pay for presentation training which I could easily deliver and for a much lower price. I pitched the idea to management and they loved it. An Onliner wanted to put on a Code Retreat, and Online supported it through money for food and prizes.&lt;/p&gt;  &lt;p&gt;We want people to be &lt;em&gt;intrepreuners&lt;/em&gt; – working within a company but knowing they have the freedom to fully utilize their interests and talents.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;We Have Fun&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Every company mentions this, and while I won’t suggest we’re an amazing workplace just because we have BBQs, we do have BBQs – and social events, and team recognition parties for hard work, and celebrations for project success, and…you get the idea.&lt;/p&gt;  &lt;p&gt;We work hard, we play hard, and we celebrate our accomplishments and success.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;We’re Established and Mature&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Online has been around for 26 years and employs approximately 260 people across our offices in Portland, Calgary, Edmonton, Winnipeg, Minneapolis, and Toronto. Our clients include major corporations in the telecommunications, oil/energy, health, finance, and agribusiness sectors.&lt;/p&gt;  &lt;p&gt;26 years of business brings a very important trait: maturity. As I mentioned, I’ve worked at many different companies and out of those they top out at about 10 years of age. There is a difference between a company 10 years old and 26 years old – maturity of processes, stronger self identity and culture, and greater capabilities in offerings and skills.&lt;/p&gt;  &lt;p&gt;We’re continually striving to be better though, and having fantastic people is the key factor in Online’s evolution over the next 26 years.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Interested?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We’re always looking for great people to join our team. While technology is a huge part of our offerings (Microsoft, Java, Oracle, Power Builder, etc.), we’re equally as deep in business management services: project management, business analysis, change management, quality assurance and testing, etc.&lt;/p&gt;  &lt;p&gt;We’re actively looking for .NET and Java developers currently, but we’re always interested in talking to great talent no matter what the discipline.&lt;/p&gt;  &lt;p&gt;So how do we match up against your current employer? Do we sound like the type of organization you’d like to work at? If you’re interested in learning more about Online, what its like working there, and current opportunities, please get in touch with me:&lt;/p&gt;  &lt;p&gt;Email: dlussier at obsglobal.com   &lt;br /&gt;Twitter: darcy_lussier    &lt;br /&gt;Or contact me through my blog (click the “Contact” link in the menu)&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3d18f1ce-1f62-4503-a8aa-9e2d8cc48a08" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Online+Business+Systems" rel="tag"&gt;Online Business Systems&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Winnipeg" rel="tag"&gt;Winnipeg&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Technology" rel="tag"&gt;Technology&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Best+Workplaces+in+Canada" rel="tag"&gt;Best Workplaces in Canada&lt;/a&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/dlussier/aggbug/149673.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/YQqflhmu-XY" height="1" width="1"/&gt;</description><dc:creator>D'Arcy Lussier</dc:creator><feedburner:origLink>http://geekswithblogs.net/dlussier/archive/2012/05/17/149673.aspx</feedburner:origLink></item><item><title>There are no addresses available for this application - Web Analytics Sharepoint</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/7yYJrKULvPU/149672.aspx</link><pubDate>Thu, 17 May 2012 06:41:20 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/naijacoder/archive/2012/05/16/149672.aspx</guid><wfw:comment>http://geekswithblogs.net/naijacoder/comments/149672.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/naijacoder/comments/commentRss/149672.aspx</wfw:commentRss><comments>http://geekswithblogs.net/naijacoder/archive/2012/05/16/149672.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/naijacoder/services/trackbacks/149672.aspx</trackback:ping><source url="http://geekswithblogs.net/naijacoder/rss.aspx">There are no addresses available for this application - Web Analytics Sharepoint</source><description>&lt;p&gt;I was setting up a search service application today and enabling search and crawling content sources.But i decided to test the "Web Analytics Web Part".&lt;br /&gt;But when i added it i got the error: &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;There are no addresses available for this application&lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Check that you started the “Managed Metadata Web Service”. This can be found here:  Central Admin &amp;gt; System Settings &amp;gt; Manage Services On ServerCheck that you started the “Managed Metadata Web Service”. &lt;/p&gt;&lt;p&gt;Hope that helps&lt;/p&gt; &lt;img src="http://geekswithblogs.net/naijacoder/aggbug/149672.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/7yYJrKULvPU" height="1" width="1"/&gt;</description><dc:creator>Patrick Olurotimi Ige</dc:creator><feedburner:origLink>http://geekswithblogs.net/naijacoder/archive/2012/05/16/149672.aspx</feedburner:origLink></item><item><title>Extending applications to HTML5 &amp; Mobile - recorded webinar</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/WVnOiveWnsQ/extending-applications-to-html5--mobile---recorded-webinar.aspx</link><pubDate>Thu, 17 May 2012 06:35:20 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Webgui/archive/2012/05/16/extending-applications-to-html5--mobile---recorded-webinar.aspx</guid><wfw:comment>http://geekswithblogs.net/Webgui/comments/149671.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Webgui/comments/commentRss/149671.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Webgui/archive/2012/05/16/extending-applications-to-html5--mobile---recorded-webinar.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Webgui/services/trackbacks/149671.aspx</trackback:ping><source url="http://geekswithblogs.net/Webgui/rss.aspx">Extending applications to HTML5 &amp; Mobile - recorded webinar</source><description>&lt;p&gt;Hi,&lt;/p&gt;&lt;p&gt;The recording of the webinar we did with Forrester Research recently is now available. At this opportunity I would like to thank Jefferey Hammond of Forrester who did a great job in discussing the Open Web, Cloud computing and Mobility trends and presenting the new development challenges they bring and why organizations need to rethink their application development strategies. &lt;/p&gt;&lt;p&gt;The 2nd part of the webinar is a presentation from Gizmox, discussing the Instant CloudMove assessment and transposition tools, which support those trends Jefferey Hammod talked about and help companies extend Windows apps to HTML5 and mobile platforms.&lt;/p&gt;&lt;p&gt;The video is available through the visualwebgui website and it is free of course:&lt;br /&gt;&lt;a href="http://www.visualwebgui.com/tabid/738/Default.aspx"&gt;http://www.visualwebgui.com/tabid/738/Default.aspx&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/Webgui/aggbug/149671.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/WVnOiveWnsQ" height="1" width="1"/&gt;</description><dc:creator>Webgui</dc:creator><feedburner:origLink>http://geekswithblogs.net/Webgui/archive/2012/05/16/extending-applications-to-html5--mobile---recorded-webinar.aspx</feedburner:origLink></item><item><title>Stylecop 4.7.19.22 has been released</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/sGmAJLTZNoo/stylecop-4.7.19.22-has-been-released.aspx</link><pubDate>Thu, 17 May 2012 05:50:57 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2012/05/17/stylecop-4.7.19.22-has-been-released.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/149670.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/149670.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2012/05/17/stylecop-4.7.19.22-has-been-released.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/149670.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Stylecop 4.7.19.22 has been released</source><description>Stylecop 4.7.22.0 has been released at &lt;a target="_blank" href="http://stylecop.codeplex.com/releases/view/79972"&gt;http://stylecop.codeplex.com/releases/view/79972&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This included a fix to a problem I reported at &lt;a target="_blank" href="http://stylecop.codeplex.com/discussions/355656"&gt;http://stylecop.codeplex.com/discussions/355656&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Again well done Andrew and team!&lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/149670.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/sGmAJLTZNoo" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2012/05/17/stylecop-4.7.19.22-has-been-released.aspx</feedburner:origLink></item><item><title>Get Detailed Build Test Results using the TFS API</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/_CrL_WrNr38/get-detailed-build-test-results-using-the-tfs-api.aspx</link><pubDate>Wed, 16 May 2012 21:37:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TarunArora/archive/2012/05/16/get-detailed-build-test-results-using-the-tfs-api.aspx</guid><wfw:comment>http://geekswithblogs.net/TarunArora/comments/149669.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TarunArora/comments/commentRss/149669.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TarunArora/archive/2012/05/16/get-detailed-build-test-results-using-the-tfs-api.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TarunArora/services/trackbacks/149669.aspx</trackback:ping><source url="http://geekswithblogs.net/TarunArora/rss.aspx">Get Detailed Build Test Results using the TFS API</source><description>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;It’s a Friday evening and you have just checked in that last bit of code, you are waiting for the build to go all green so that you could call it a day. Just then the build summary page comes back red on the test results section. The build summary page tells you that 1 of the test namely &lt;em&gt;HelloWorld.Tests.UnitTest1.Sum_TwoIntNumbers_IncorrectResult_TestMethod&lt;/em&gt; has failed… &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_thumb_2.png" width="477" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To know why the test has failed, you have no option but to click on &lt;em&gt;&lt;font color="#0000ff"&gt;View Test Results&lt;/font&gt;&lt;/em&gt; link which in turn downloads the trx file from the server so that you can see the error message and possibly identify the root cause of failure from the description error message. If the test list contains more than a 1000 tests you will notice that it takes a lot of time in downloading the test results locally. That’s probably not what you would want to do on a Friday evening… &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_10.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_thumb_4.png" width="482" height="251" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In this blog post I’ll show you how to use the TFS API to write a simple utility to pull down the test result details programmatically and a bonus power tool for those who read the complete post, let’s get started… &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;A peek at what we will get to…&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_12.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/GetDetailedBuildTestResultsusingtheTFSAP_6C6/image_thumb_5.png" width="692" height="308" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;1. Connecting to TFS using the API &lt;/h3&gt;  &lt;p&gt;If you are new to the TFS API, refer to this blog post on &lt;a href="http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;getting started with the Visual Studio SDK&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The below snippet will help present a connect to tfs pop up to the user&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; TfsTeamProjectCollection _tfs;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _selectedTeamProject;

&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ConnectToTfs()
{
       TeamProjectPicker tfsPP = &lt;span class="kwrd"&gt;new&lt;/span&gt; TeamProjectPicker(TeamProjectPickerMode.SingleProject, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
       tfsPP.ShowDialog();
       &lt;span class="kwrd"&gt;this&lt;/span&gt;._tfs = tfsPP.SelectedTeamProjectCollection;
       &lt;span class="kwrd"&gt;this&lt;/span&gt;._selectedTeamProject = tfsPP.SelectedProjects[0].Name;
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;2. Get All Build Definitions for the selected Team Project&lt;/h3&gt;

&lt;p&gt;By using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.client.ibuildserver.aspx"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;IBuildService&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; you can get access to the QueryBuildDefinition method which takes team project and returns the build definitions associated to the team project.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; IBuildDefinition[] GetAllBuildDefinitionsFromTheTeamProject(_selectTeamProject)
{
      _bs = _tfs.GetService&amp;lt;IBuildServer&amp;gt;();
      &lt;span class="kwrd"&gt;return&lt;/span&gt; _bs.QueryBuildDefinitions(_selectedTeamProject);
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h3&gt;3. Get All Builds Associated to the Build Definition&lt;/h3&gt;

&lt;p&gt;Get All Builds in the build definition for specific build Definition specifications programmatically, this helps you narrow down the search and get the selected few filtered results, like in the snippet below, we specify the maximum number of builds to return, what build quality builds to return, etc.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="rem"&gt;// Get All Builds for the selected build definition &lt;/span&gt;
&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; cbBuildDef_SelectionChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, SelectionChangedEventArgs e)
{
       var bdef = (((ComboBox)sender).SelectedItem) &lt;span class="kwrd"&gt;as&lt;/span&gt; IBuildDefinition;
       var def = _bs.CreateBuildDetailSpec(_selectedTeamProject);
       def.MaxBuildsPerDefinition = 10;
       def.QueryOrder = BuildQueryOrder.FinishTimeDescending;
       def.DefinitionSpec.Name = bdef.Name;
       def.Status = BuildStatus.All;
       var builds = _bs.QueryBuilds(def).Builds;

        cbBuild.ItemsSource = _bs.QueryBuilds(def).Builds;
        cbBuild.DisplayMemberPath = &lt;span class="str"&gt;"BuildNumber"&lt;/span&gt;;
        cbBuild.SelectedValuePath = &lt;span class="str"&gt;"Uri"&lt;/span&gt;;
        cbBuild.SelectedIndex = 0;
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;4. Get all the Test Results associated to a Build&lt;/h3&gt;

&lt;p&gt;I’ll be using the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.testmanagement.client.itestmanagementservice.aspx"&gt;&lt;font color="#0000ff"&gt;ITestManagementService&lt;/font&gt;&lt;/a&gt; to pull all test runs associated to a build. As you can see below by using the QueryResultsByOutcome I can query for tests that passed or failed or tests that errored. You could also use the QueryResultsByOwner to get test results by individual tfs users.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetTestResult(Uri buildUri)
{
       _tms = _tfs.GetService&amp;lt;ITestManagementService&amp;gt;();
       var testRuns = _tms.GetTeamProject(_selectedTeamProject).TestRuns.ByBuild(buildUri);

        &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var testRun &lt;span class="kwrd"&gt;in&lt;/span&gt; testRuns)
        {
             lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}"&lt;/span&gt;, testRun.Title));
             lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"TestRunId: {0} | TestPlanId: {1}"&lt;/span&gt;, testRun.Id, testRun.TestPlanId));
             lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"TestSettingsId: {0} | TestEnvironmentId {1} "&lt;/span&gt;, testRun.TestSettingsId, testRun.TestEnvironmentId));

             var totalTests = testRun.Statistics.TotalTests;

              &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var et &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Error))
              {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, et.Outcome, et.TestCaseTitle, et.ErrorMessage));
              }

              &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tp &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Passed))
              {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} "&lt;/span&gt;, tp.Outcome, tp.TestCaseTitle));
               }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tf &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Failed))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tf.Outcome, tf.TestCaseTitle, tf.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tw &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Warning))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tw.Outcome, tw.TestCaseTitle, tw.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var ta &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Aborted))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, ta.Outcome, ta.TestCaseTitle, ta.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tb &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Blocked))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tb.Outcome, tb.TestCaseTitle, tb.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var ti &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Inconclusive))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, ti.Outcome, ti.TestCaseTitle, ti.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var to &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Timeout))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, to.Outcome, to.TestCaseTitle, to.ErrorMessage));
                }

                &lt;span class="rem"&gt;// Get the test results by user by passing in the Test Foundation Identity&lt;/span&gt;
                &lt;span class="rem"&gt;// testRun.QueryResultsByOwner(TeamFoundationIdentity);&lt;/span&gt;
            }

            &lt;span class="kwrd"&gt;if&lt;/span&gt;(testRuns.Count() == 0)
                lstTestRunDetails.Items.Add(&lt;span class="str"&gt;"No Test Results have been associated with the selected build"&lt;/span&gt;);
 }&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;5. Putting it all together&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=61D0A67D27B527D3&amp;amp;id=61D0A67D27B527D3%21152#cid=61D0A67D27B527D3&amp;amp;id=61D0A67D27B527D3%21653"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;Download the sample application&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; – wpf, .net 4, you need to have &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=2680"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;vs sdk&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; installed on your machine to run it. &lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Controls;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Data;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Documents;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Input;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Media;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Media.Imaging;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Navigation;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Windows.Shapes;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.TestManagement.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.VersionControl.Client;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; TfsApiGetTestResultsAndDetailsByStatus
{
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Interaction logic for MainWindow.xaml&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; MainWindow : Window
    {
        &lt;span class="kwrd"&gt;public&lt;/span&gt; MainWindow()
        {
            InitializeComponent();
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; TfsTeamProjectCollection _tfs;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; _selectedTeamProject;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; IBuildServer _bs;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; VersionControlServer _vcs;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; ITestManagementService _tms;

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ConnectToTfs()
        {
            TeamProjectPicker tfsPP = &lt;span class="kwrd"&gt;new&lt;/span&gt; TeamProjectPicker(TeamProjectPickerMode.SingleProject, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
            tfsPP.ShowDialog();
            &lt;span class="kwrd"&gt;this&lt;/span&gt;._tfs = tfsPP.SelectedTeamProjectCollection;
            &lt;span class="kwrd"&gt;this&lt;/span&gt;._selectedTeamProject = tfsPP.SelectedProjects[0].Name;
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnConnect_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)
        {
            ConnectToTfs();
            _vcs = _tfs.GetService&amp;lt;VersionControlServer&amp;gt;();
            cbBuildDef.ItemsSource = GetAllBuildDefinitionsFromTheTeamProject();
            cbBuildDef.DisplayMemberPath = &lt;span class="str"&gt;"Name"&lt;/span&gt;;
            cbBuildDef.SelectedValuePath = &lt;span class="str"&gt;"Uri"&lt;/span&gt;;
            cbBuildDef.SelectedIndex = 0;
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; IBuildDefinition[] GetAllBuildDefinitionsFromTheTeamProject()
        {
            _bs = _tfs.GetService&amp;lt;IBuildServer&amp;gt;();
            &lt;span class="kwrd"&gt;return&lt;/span&gt; _bs.QueryBuildDefinitions(_selectedTeamProject);
        }

        &lt;span class="rem"&gt;// Get All Builds for the selected build definition &lt;/span&gt;
        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; cbBuildDef_SelectionChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, SelectionChangedEventArgs e)
        {
            var bdef = (((ComboBox)sender).SelectedItem) &lt;span class="kwrd"&gt;as&lt;/span&gt; IBuildDefinition;
            var def = _bs.CreateBuildDetailSpec(_selectedTeamProject);
            def.MaxBuildsPerDefinition = 10;
            def.QueryOrder = BuildQueryOrder.FinishTimeDescending;
            def.DefinitionSpec.Name = bdef.Name;
            def.Status = BuildStatus.All;
            var builds = _bs.QueryBuilds(def).Builds;

            cbBuild.ItemsSource = _bs.QueryBuilds(def).Builds;
            cbBuild.DisplayMemberPath = &lt;span class="str"&gt;"BuildNumber"&lt;/span&gt;;
            cbBuild.SelectedValuePath = &lt;span class="str"&gt;"Uri"&lt;/span&gt;;
            cbBuild.SelectedIndex = 0;
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; cbBuild_SelectionChanged(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, SelectionChangedEventArgs e)
        {
            var build = (((ComboBox)sender).SelectedItem) &lt;span class="kwrd"&gt;as&lt;/span&gt; IBuildDetail;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (build == &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; ((ComboBox)sender).Items.Count != 0)
            {
                build = ((ComboBox)sender).Items[0] &lt;span class="kwrd"&gt;as&lt;/span&gt; IBuildDetail;
                var def = _bs.CreateBuildDetailSpec(_selectedTeamProject);
                GetTestResult(build.Uri);
            }
        }

        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetTestResult(Uri buildUri)
        {
            _tms = _tfs.GetService&amp;lt;ITestManagementService&amp;gt;();
            var testRuns = _tms.GetTeamProject(_selectedTeamProject).TestRuns.ByBuild(buildUri);

            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var testRun &lt;span class="kwrd"&gt;in&lt;/span&gt; testRuns)
            {
                lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}"&lt;/span&gt;, testRun.Title));
                lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"TestRunId: {0} | TestPlanId: {1}"&lt;/span&gt;, testRun.Id, testRun.TestPlanId));
                lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"TestSettingsId: {0} | TestEnvironmentId {1} "&lt;/span&gt;, testRun.TestSettingsId, testRun.TestEnvironmentId));

                var totalTests = testRun.Statistics.TotalTests;

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var et &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Error))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, et.Outcome, et.TestCaseTitle, et.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tp &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Passed))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} "&lt;/span&gt;, tp.Outcome, tp.TestCaseTitle));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tf &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Failed))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tf.Outcome, tf.TestCaseTitle, tf.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tw &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Warning))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tw.Outcome, tw.TestCaseTitle, tw.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var ta &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Aborted))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, ta.Outcome, ta.TestCaseTitle, ta.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var tb &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Blocked))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, tb.Outcome, tb.TestCaseTitle, tb.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var ti &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Inconclusive))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, ti.Outcome, ti.TestCaseTitle, ti.ErrorMessage));
                }

                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var to &lt;span class="kwrd"&gt;in&lt;/span&gt; testRun.QueryResultsByOutcome(TestOutcome.Timeout))
                {
                    lstTestRunDetails.Items.Add(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"{0}: {1} - {2}"&lt;/span&gt;, to.Outcome, to.TestCaseTitle, to.ErrorMessage));
                }

                &lt;span class="rem"&gt;// Get the test results by user by passing in the Test Foundation Identity&lt;/span&gt;
                &lt;span class="rem"&gt;// testRun.QueryResultsByOwner(TeamFoundationIdentity);&lt;/span&gt;
            }

            &lt;span class="kwrd"&gt;if&lt;/span&gt;(testRuns.Count() == 0)
                lstTestRunDetails.Items.Add(&lt;span class="str"&gt;"No Test Results have been associated with the selected build"&lt;/span&gt;);
        }
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;6. And the Bonus Power tool…&lt;/h3&gt;

&lt;p&gt;Thank you for reading this far. If you haven’t already download the Community TFS Build Manager extension from the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;visual studio extension gallery&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; do so now. The Community TFS Build Manager (TBM) is an open source build management solution developed by the ALM rangers, the build manager simplifies the management of builds in medium to large Team Foundation Server environments. Some common limitations you may run into while dealing with builds through the Visual Studio Build Explorer are not being able to perform bulk operations on builds, create a relationship diagram of the build controller/agents, managing build process templates, etc. The community TFS build manager address that and many other such gaps you may encounter while managing builds through the visual studio build explorer. You can grab the source and read more about the project on &lt;a href="http://tfsbuildextensions.codeplex.com/"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;CodePlex&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Recently a new feature namely Build Notes has been added to the community TFS Build Manager that let’s you generate an ms word report of the build summary. A sample attached below… Look at the test result section, the trx file is parsed for you to get you a test result list filtered by test result outcome, where failed test also carries the error message. Watch this &lt;a href="http://www.youtube.com/watch?v=7jSP2NvuU8M&amp;amp;feature=player_embedded"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;video&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; or read this &lt;a href="http://geekswithblogs.net/TarunArora/archive/2012/04/27/community-tfs-build-manager-ndash-build-notes-preview.aspx"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;post&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; here on what you can achieve with the build notes. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/CommunityTFSBuildManagerBuildNotes_8B3F/image_32.png"&gt;&lt;img title="image" border="0" alt="image" align="left" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/CommunityTFSBuildManagerBuildNotes_8B3F/image_thumb_15.png" width="490" height="533" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/CommunityTFSBuildManagerBuildNotes_8B3F/image_30.png"&gt;&lt;img title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/WindowsLiveWriter/CommunityTFSBuildManagerBuildNotes_8B3F/image_thumb_14.png" width="487" height="471" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Thank you for taking the time out and reading this blog post. If you enjoyed the post, remember to subscribe to &lt;a href="http://feeds.feedburner.com/TarunArora"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;http://feeds.feedburner.com/TarunArora&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check out the other posts on &lt;a href="http://geekswithblogs.net/TarunArora/category/12804.aspx"&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;cool tools using TFS API&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. &lt;img alt="In love" src="http://geekswithblogs.net/images/geekswithblogs_net/TarunArora/Windows-Live-Writer/TFS-APIRelease-Notes-From-Build_DFBA/wlEmoticon-Inlove_2.png" /&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/TarunArora/aggbug/149669.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/_CrL_WrNr38" height="1" width="1"/&gt;</description><dc:creator>Tarun Arora</dc:creator><feedburner:origLink>http://geekswithblogs.net/TarunArora/archive/2012/05/16/get-detailed-build-test-results-using-the-tfs-api.aspx</feedburner:origLink></item><item><title>SQL Server 2008 R2 setup fails on a Windows Virtual PC (VPC) with error code 2337</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/jJKwW6EPOXA/149668.aspx</link><pubDate>Wed, 16 May 2012 13:17:04 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/danielh/archive/2012/05/16/149668.aspx</guid><wfw:comment>http://geekswithblogs.net/danielh/comments/149668.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/danielh/comments/commentRss/149668.aspx</wfw:commentRss><comments>http://geekswithblogs.net/danielh/archive/2012/05/16/149668.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/danielh/services/trackbacks/149668.aspx</trackback:ping><source url="http://geekswithblogs.net/danielh/rss.aspx">SQL Server 2008 R2 setup fails on a Windows Virtual PC (VPC) with error code 2337</source><description>&lt;p&gt;When installing SQL Server 2008 R2 (Developer, Standard, or Enterprise) within a Virtual PC you may suffer the following problem:&lt;/p&gt;  &lt;p&gt;“The following error has occurred:  The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2337.”&lt;/p&gt;  &lt;p&gt;The error occurs in the following package: sql_engine_core_shared&lt;/p&gt;  &lt;p&gt;It turns out that this problem is with the DVD/ISO Mounting Feature in Windows Virtual PC.  To workaround the problem you need to expand the ISO with WinRAR – not WinZip and not by copying the contents of the mounted ISO to the VPC’s hard drive.  You need to use WinRAR to extract the ISO; extracting the contents of the ISO with anything else just won’t solve the problem.&lt;/p&gt;  &lt;p&gt;Microsoft have acknowledged the problem here:&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/SQLServer/feedback/details/550502/r2-rc0-install-problem-on-virtual-pc-2007" href="https://connect.microsoft.com/SQLServer/feedback/details/550502/r2-rc0-install-problem-on-virtual-pc-2007"&gt;https://connect.microsoft.com/SQLServer/feedback/details/550502/r2-rc0-install-problem-on-virtual-pc-2007&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;WinRAR can be found here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.win-rar.com/download.html" href="http://www.win-rar.com/download.html"&gt;http://www.win-rar.com/download.html&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/danielh/aggbug/149668.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/jJKwW6EPOXA" height="1" width="1"/&gt;</description><dc:creator>Daniel Hester</dc:creator><feedburner:origLink>http://geekswithblogs.net/danielh/archive/2012/05/16/149668.aspx</feedburner:origLink></item><item><title>Self Host Web Api's for Integration Testing</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/pGCE2Mnqb3c/self-host-web-apis-for-integration-testing.aspx</link><pubDate>Wed, 16 May 2012 09:27:52 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jdothoffman/archive/2012/05/16/self-host-web-apis-for-integration-testing.aspx</guid><wfw:comment>http://geekswithblogs.net/jdothoffman/comments/149667.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jdothoffman/comments/commentRss/149667.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jdothoffman/archive/2012/05/16/self-host-web-apis-for-integration-testing.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/jdothoffman/services/trackbacks/149667.aspx</trackback:ping><source url="http://geekswithblogs.net/jdothoffman/rss.aspx">Self Host Web Api's for Integration Testing</source><description>&lt;p&gt;Recently I had a need to write some tests making Web Api calls that would be deployable to the build server without any special configuration.What I did was utilize the Self Hosting feature in the Asp.NetWebApi.  First, I created a simple Api controller .&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;pre style="padding: 5px; border: 1px dashed rgb(153, 153, 153); width: 100%; color: rgb(0, 0, 0); line-height: 14px; overflow: auto; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; background-color: rgb(238, 238, 238);"&gt;&lt;p&gt;&lt;code&gt;// GET /api/values
    public class ValuesController : ApiController
    {
        public SomeObjects GetByName(string firstName, string lastName)
        {
            var someObjects= new List&amp;lt;SomeObject&amp;gt;()
                               {
                                    new SomeObject
                                    {
                                        FirstName = "Tom",
                                        LastName = "Jones",
                                        Id= 1213
                                    },
                                     new SomeObject
                                    {
                                        FirstName = "Jane",
                                        LastName = "Doe",
                                        Id= 1523
                                    },
                                     new SomeObject
                                    {
                                        FirstName = "John",
                                        LastName = "Doe",
                                        Id= 3123
                                    }
                               };

            return someObjects.Where(x =&amp;gt; x.FirstName == firstName &amp;amp;&amp;amp; x.LastName == lastName).SingleOrDefault();
        }
    }
&lt;/code&gt;&lt;/p&gt;&lt;/pre&gt;&lt;p&gt;
&lt;br /&gt;

Next, I created a simple utility class to execute tests against the hosted service&lt;/p&gt;&lt;p&gt; &lt;/p&gt;
&lt;pre style="padding: 5px; border: 1px dashed rgb(153, 153, 153); width: 100%; color: rgb(0, 0, 0); line-height: 14px; overflow: auto; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; background-color: rgb(238, 238, 238);"&gt;&lt;code&gt;public static class TestHostingUtil
    {
        public static void ExecuteHostedTest(Action&amp;lt;Task&amp;gt; continuationAction, string routeTemplate = null)
        {
            var routeTempl = "api/{controller}/{id}";
            if (!string.IsNullOrEmpty(routeTemplate))
            {
                routeTempl = routeTemplate;
            }

            var serverConfig = new HttpSelfHostConfiguration("http://localhost:8080/");
            serverConfig.Routes.MapHttpRoute("default", routeTempl, new { id = RouteParameter.Optional, folder = "TestApiControllers" });

            var server = new HttpSelfHostServer(serverConfig);
            
            server.OpenAsync().ContinueWith(continuationAction).Wait();
            server.CloseAsync();
        }
    }
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;
&lt;br /&gt;Note the "folder" param in the HttpRoute registration. In the test project this is the folder under which I added the Api controllers, if they were not in a seperate folder you would leave this blank.&lt;/p&gt;&lt;p&gt;Finally, the usuage for your tests:&lt;/p&gt;
&lt;pre style="padding: 5px; border: 1px dashed rgb(153, 153, 153); width: 100%; color: rgb(0, 0, 0); line-height: 14px; overflow: auto; font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; font-size: 12px; background-color: rgb(238, 238, 238);"&gt;&lt;code&gt;[TestMethod]
        public void Should_Perform_Get()
        {
            TestHostingUtil.ExecuteHostedTest(task =&amp;gt;
                                  {

                                      // Arrange
                                      var webUtil=
                                          new WebUtil
                                              &amp;lt;SomeObject, SomeObject&amp;gt;(
                                              "http://localhost:8080/api/values?firstName=Tom&amp;amp;lastName=Jones");

                                      // Act
                                      var result = webUtil.Get();

                                      // Assert
                                      result.FirstName.Should().Be("Tom");
                                  });
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt; &lt;img src="http://geekswithblogs.net/jdothoffman/aggbug/149667.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/pGCE2Mnqb3c" height="1" width="1"/&gt;</description><dc:creator>Justin Hoffman</dc:creator><feedburner:origLink>http://geekswithblogs.net/jdothoffman/archive/2012/05/16/self-host-web-apis-for-integration-testing.aspx</feedburner:origLink></item><item><title>Microsoft Test Manager&amp;ndash;Test Cases Not in a Test Plan</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/RtfZ3nm7t3I/microsoft-test-managerndashtest-cases-not-in-a-test-plan.aspx</link><pubDate>Wed, 16 May 2012 06:21:13 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BobHardister/archive/2012/05/16/microsoft-test-managerndashtest-cases-not-in-a-test-plan.aspx</guid><wfw:comment>http://geekswithblogs.net/BobHardister/comments/149666.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BobHardister/comments/commentRss/149666.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BobHardister/archive/2012/05/16/microsoft-test-managerndashtest-cases-not-in-a-test-plan.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BobHardister/services/trackbacks/149666.aspx</trackback:ping><source url="http://geekswithblogs.net/BobHardister/rss.aspx">Microsoft Test Manager&amp;ndash;Test Cases Not in a Test Plan</source><description>&lt;p&gt;Visual Studio and Team Foundation Server (TFS) 2010 provided support for system testing. Test cases were added as a work item type. But test plans and suites are not work items and this greatly limits the visibility into the management of test artifacts.  For example, there is no easy way out-of-the-box to find test cases that don’t belong to a test plan.&lt;/p&gt;  &lt;p&gt;Here’s the SQL that creates a list of test cases providing the test case:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ID&lt;/li&gt;    &lt;li&gt;Title&lt;/li&gt;    &lt;li&gt;State&lt;/li&gt;    &lt;li&gt;Assigned To&lt;/li&gt;    &lt;li&gt;Area Path&lt;/li&gt;    &lt;li&gt;Iteration Path&lt;/li&gt;    &lt;li&gt;Plan and Suite Path&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You can use the output to identify what test cases are in what plan and suite; and more to the point, which test cases are not in a plan.&lt;/p&gt;  &lt;p&gt;Using the &lt;a href="http://www.amrein.com/apps/page.asp?Q=5753" target="_blank"&gt;Amrein SQL Viewer Web Part&lt;/a&gt; you can easily throw this up as a web part on the project portal site where users can globally access, sort and filter the data.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="2"&gt;SELECT tco.System_Id as ID        &lt;br /&gt;,tco.System_Title as Title         &lt;br /&gt;,tco.System_State as State         &lt;br /&gt;,ISNULL(p.Name,'null') as Assigned         &lt;br /&gt;,tco.AreaPath as Area         &lt;br /&gt;,tco.IterationPath as Iteration         &lt;br /&gt;,ISNULL(s.SuitePath,'null') as 'Plan'         &lt;br /&gt;FROM Tfs_01Warehouse.dbo.vDimTestCaseOverlay tco inner join Tfs_01Warehouse.dbo.DimPerson p         &lt;br /&gt;ON tco.System_AssignedTo__PersonSK=p.PersonSK left outer join Tfs_{&lt;em&gt;collection DB&lt;/em&gt;}.dbo.tbl_SuiteEntry se ON tco.System_Id=se.TestCaseId left outer join Tfs_01Warehouse.dbo.vDimTestSuiteOverlay s         &lt;br /&gt;ON se.SuiteId=s.TestSuiteID         &lt;br /&gt;WHERE tco.TeamProjectSK={#} /* team project */        &lt;br /&gt;ORDER BY tco.System_Id DESC &lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;img src="http://geekswithblogs.net/BobHardister/aggbug/149666.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/RtfZ3nm7t3I" height="1" width="1"/&gt;</description><dc:creator>Bob Hardister</dc:creator><feedburner:origLink>http://geekswithblogs.net/BobHardister/archive/2012/05/16/microsoft-test-managerndashtest-cases-not-in-a-test-plan.aspx</feedburner:origLink></item><item><title>Mobile responsive site design in Expression Web</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/u5X76GDw9Qg/mobile-responsive-site-design-in-expression-web.aspx</link><pubDate>Wed, 16 May 2012 08:35:12 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/ihaynes/archive/2012/05/15/mobile-responsive-site-design-in-expression-web.aspx</guid><wfw:comment>http://geekswithblogs.net/ihaynes/comments/149665.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/ihaynes/comments/commentRss/149665.aspx</wfw:commentRss><comments>http://geekswithblogs.net/ihaynes/archive/2012/05/15/mobile-responsive-site-design-in-expression-web.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/ihaynes/services/trackbacks/149665.aspx</trackback:ping><source url="http://geekswithblogs.net/ihaynes/rss.aspx">Mobile responsive site design in Expression Web</source><description>&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;Although it doesn’t have any
specific tools to help responsive or mobile site design this is still possible in
Expression Web and &lt;/span&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;I’ve created a number of
snippets to help the process.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;HTML5 and CSS3 are the key
to responsive design, so the snippets cover the new HTML5 layout elements, form
input types and microdata tags, and the CSS3 snippets cover box-radius,
box-shadow, gradients etc. The mobile snippets include the CSS3 media queries,
mobile meta tags and the responsd.js shim that enables older non-HTML5/CSS3
browsers to use the media queries.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;The snippets are downloadable
from the Expression Gallery:&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://gallery.expression.microsoft.com/HTML5Snippets" target="_blank"&gt;&lt;font color="#0000ff" size="2" face="Tahoma"&gt;http://gallery.expression.microsoft.com/HTML5Snippets&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://gallery.expression.microsoft.com/CSS3Snippets" target="_blank"&gt;&lt;font color="#0000ff" size="2" face="Tahoma"&gt;http://gallery.expression.microsoft.com/CSS3Snippets&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://gallery.expression.microsoft.com/MobileSnippets" target="_blank"&gt;&lt;font color="#0000ff" size="2" face="Tahoma"&gt;http://gallery.expression.microsoft.com/MobileSnippets&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;font face="Tahoma"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;font size="2"&gt;I’ve also created a sample
mobile-friendly responsive template for EW.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="2"&gt;

&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;a href="http://gallery.expression.microsoft.com/MobileTemplate" target="_blank"&gt;&lt;font color="#0000ff" size="2" face="Tahoma"&gt;http://gallery.expression.microsoft.com/MobileTemplate&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;font size="2" face="Tahoma"&gt;

&lt;/font&gt;&lt;p style="margin: 0pt 0pt 10pt;" class="MsoNormal"&gt;&lt;span style="color: black; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin; mso-bidi-font-weight: bold;"&gt;&lt;font size="2"&gt;&lt;font face="Tahoma"&gt;One caveat about using the
CSS3 media queries with a &lt;u&gt;mobile-first layout&lt;/u&gt; (the preferred way to use
them) is that the Design view in Expression Web doesn’t recognise the queries
and therefore displays the mobile view rather than the appropriate wide screen
view. You may therefore have to rely more on browser preview when laying out pages.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

 &lt;img src="http://geekswithblogs.net/ihaynes/aggbug/149665.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/u5X76GDw9Qg" height="1" width="1"/&gt;</description><dc:creator>ihaynes</dc:creator><feedburner:origLink>http://geekswithblogs.net/ihaynes/archive/2012/05/15/mobile-responsive-site-design-in-expression-web.aspx</feedburner:origLink></item><item><title>SharePoint Saturday NYC Update from the Trenches</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/spJKNWNRVdM/sharepoint-saturday-nyc-update-from-the-trenches.aspx</link><pubDate>Tue, 15 May 2012 23:49:04 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/MOSSLover/archive/2012/05/16/sharepoint-saturday-nyc-update-from-the-trenches.aspx</guid><wfw:comment>http://geekswithblogs.net/MOSSLover/comments/149664.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/MOSSLover/comments/commentRss/149664.aspx</wfw:commentRss><comments>http://geekswithblogs.net/MOSSLover/archive/2012/05/16/sharepoint-saturday-nyc-update-from-the-trenches.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/MOSSLover/services/trackbacks/149664.aspx</trackback:ping><source url="http://geekswithblogs.net/MOSSLover/rss.aspx">SharePoint Saturday NYC Update from the Trenches</source><description>&lt;p&gt;So as you know I am yet again involved in SPS NYC with my awesome teammates, Greg Hurlman, Jason Gallicchio, Tasha Scott, and Tom Daly.  The speakers have finally been picked and a first draft schedule has been posted at &lt;a href="http://www.sharepointsaturday.org/ny"&gt;http://www.sharepointsaturday.org/ny&lt;/a&gt;.  We are also still looking for sponsors if you guys are interested you can also click on the link to grab the form, sign it, and send it to &lt;a href="mailto:sponsors@spsnyc.com"&gt;sponsors@spsnyc.com&lt;/a&gt;.  We are also looking for volunteers and you can fill out the form at the same place listed above.  We are offering a t-shirt and a gift card for those who dedicate a couple hours of service to the event.  I believe this year will be the best event yet.  I am also considering wearing a Viking Helmut with horns if at least one other person will wear a similar item.  I would consider dressing up if I could get another person to dress up, but I think that’s asking for too much.  Also, I need to run around and help the others put out fires, so I’m not so sure full on dress attire would work out.&lt;/p&gt;  &lt;p&gt;Anyway, registration is not yet posted for those of you guys who wish to attend.  We might post it more towards the end of June.  I am not yet sure what the decision was on the exact date, but normally we post about 6 weeks prior to the event.  I hope to see you all this year at the event.  Yet again my dad is going to show up, so stop by, attend a few sessions, and say hi to everyone.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a36b1e19-a32b-434a-a7e0-2d7bf69077ad" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SPS+NYC" rel="tag"&gt;SPS NYC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+Saturday" rel="tag"&gt;SharePoint Saturday&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint" rel="tag"&gt;SharePoint&lt;/a&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/MOSSLover/aggbug/149664.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/spJKNWNRVdM" height="1" width="1"/&gt;</description><dc:creator>MOSSLover</dc:creator><feedburner:origLink>http://geekswithblogs.net/MOSSLover/archive/2012/05/16/sharepoint-saturday-nyc-update-from-the-trenches.aspx</feedburner:origLink></item><item><title>Integrating SharePoint with Fruity Products</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/f8D5Rq_6Gpc/integrating-sharepoint-with-fruity-products.aspx</link><pubDate>Tue, 15 May 2012 23:42:17 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/MOSSLover/archive/2012/05/16/integrating-sharepoint-with-fruity-products.aspx</guid><wfw:comment>http://geekswithblogs.net/MOSSLover/comments/149663.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/MOSSLover/comments/commentRss/149663.aspx</wfw:commentRss><comments>http://geekswithblogs.net/MOSSLover/archive/2012/05/16/integrating-sharepoint-with-fruity-products.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/MOSSLover/services/trackbacks/149663.aspx</trackback:ping><source url="http://geekswithblogs.net/MOSSLover/rss.aspx">Integrating SharePoint with Fruity Products</source><description>&lt;p&gt;So as you can see this blog has not been the best in the world lately.  Life changes and burn out are killing me lately.  Don’t get me wrong I love my job.  I love writing things in Visual Studio, in fact this week I got to work with MVC3 for the first time ever.  I am completely hooked on MVC3 and will further explore that in the upcoming months.  I have entertaining a completely different idea, because I think it would be fun and interesting.  The downside is it involves me buying an Apple computer.&lt;/p&gt;  &lt;p&gt;I have been fighting buying a Macbook Pro for ages.  I love building Windows PCs from scratch.  I love knowing that I built the computer that I am using.  I guess it stems back from my grandparents teaching me that hard work leads to a more fulfilling accomplishment.  Anyway, I am not switching over to the darkside.  I just built myself a gaming PC (core i7 process, 24 gb of ram-32 when I RMA the last two chips, 4 hard drives – main being an SSD, and an NVIDIA GTX 570 card).  I just want to branch out and learn some new tech, so I figure if I have some spare time (which is like asking for a unicorn), I will start posting more about my new development.  Anyway, I am waiting for the WWDC and then I am going to decide on what flavor of Macbook Pro to purchase.  It turns out a Macbook Air won’t get me what I want programmatically the processor might not be quite up to par for hardcore development.  I wouldn’t want to limit myself to anything softcore right?&lt;/p&gt;  &lt;p&gt;So check back here periodically or on twitter.  I’m sure I will post something about my endeavors.  In the meanwhile I am still working on my personal life and I am happy to say I have friends in the area.  For the first time in a very long time some of them are actually female.  As you all know my friends for the longest time were members of the SharePoint and .Net Community mainly and of the male breed.  So things are working out.  I still love every single day in NYC.  It is the first city I can 100% say I belong in.  If I have my way I will stay in the metro area for a long time.  Anyway, I hope you all are having a good time and goodnight.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5bd54d34-83a8-4fe9-bad0-5700ddc8426f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SharePoint+and+Apple" rel="tag"&gt;SharePoint and Apple&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft+and+Apple" rel="tag"&gt;Microsoft and Apple&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Apple" rel="tag"&gt;Apple&lt;/a&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/MOSSLover/aggbug/149663.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/f8D5Rq_6Gpc" height="1" width="1"/&gt;</description><dc:creator>MOSSLover</dc:creator><feedburner:origLink>http://geekswithblogs.net/MOSSLover/archive/2012/05/16/integrating-sharepoint-with-fruity-products.aspx</feedburner:origLink></item><item><title>Let&amp;rsquo;s MEET Windows Azure</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/6sYV9s1kzbg/letrsquos-meet-windows-azure.aspx</link><pubDate>Wed, 16 May 2012 00:37:18 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/shaunxu/archive/2012/05/16/letrsquos-meet-windows-azure.aspx</guid><wfw:comment>http://geekswithblogs.net/shaunxu/comments/149662.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/shaunxu/comments/commentRss/149662.aspx</wfw:commentRss><comments>http://geekswithblogs.net/shaunxu/archive/2012/05/16/letrsquos-meet-windows-azure.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/shaunxu/services/trackbacks/149662.aspx</trackback:ping><source url="http://geekswithblogs.net/shaunxu/rss.aspx">Let&amp;rsquo;s MEET Windows Azure</source><description>&lt;p&gt;Microsoft had just released a new website &lt;a href="http://www.meetwindowsazure.com/"&gt;http://www.meetwindowsazure.com/&lt;/a&gt; which announced an outstanding event named “MEET Windows Azure”. There will be some awesome new features and releases being published around the Windows Azure Platform, the cloud computing platform and cloud-based technologies Microsoft offers. From what I know, this might be the biggest innovation in Windows Azure till now.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/shaunxu/Windows-Live-Writer/Lets-MEET-Windows-Azure_8443/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/shaunxu/Windows-Live-Writer/Lets-MEET-Windows-Azure_8443/image_thumb.png" width="531" height="498" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The event will be hosted at 1pm PDT, June 7th at the &lt;a href="http://www.madronestudios.com/ie.html" target="_blank"&gt;Madrone Studio&lt;/a&gt; in San Francisco with limited sites. &lt;strong&gt;But it will opened to everyone who is interested in through the live online.&lt;/strong&gt; If you are willing to join the live stream, like me, go to &lt;a title="http://register.meetwindowsazure.com/" href="http://register.meetwindowsazure.com/"&gt;http://register.meetwindowsazure.com/&lt;/a&gt; to register as soon as possible.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;MEET Windows Azure Blog Relay:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;- &lt;/b&gt;Roger Jennings (&lt;a href="https://twitter.com/#!/rogerjenn"&gt;@rogerjenn&lt;/a&gt;): &lt;a href="http://oakleafblog.blogspot.se/2012/05/social-meet-up-on-twitter-for-meet.html"&gt;Social meet up on Twitter for Meet Windows Azure on June 7th&lt;/a&gt;&lt;br /&gt;- Anton Staykov (&lt;a href="https://twitter.com/#!/astaykov"&gt;@astaykov&lt;/a&gt;): &lt;a href="http://blogs.staykov.net/2012/05/meet-windows-azure-on-june-7th.html"&gt;MEET Windows Azure on June the 7th&lt;/a&gt;&lt;br /&gt;- Patriek van Dorp (&lt;a href="https://twitter.com/#!/pvandorp"&gt;@pvandorp&lt;/a&gt;): &lt;a href="http://cloudythoughts.siadis.com/windows-azure/social-meet-up-for-meet-windows-azure-on-june-7th"&gt;Social Meet Up for ‘MEET Windows Azure’ on June 7th&lt;/a&gt;&lt;br /&gt;- Marcel Meijer (&lt;a href="https://twitter.com/#!/MarcelMeijer"&gt;@MarcelMeijer&lt;/a&gt;): &lt;a href="http://blogs.msmvps.com/marcelmeijer/blog/2012/05/16/meet-windows-azure-on-june-the-7th/"&gt;MEET Windows Azure on June the 7th&lt;/a&gt;&lt;br /&gt;- Nuno (&lt;a href="https://twitter.com/#!/NunoGodinho"&gt;@NunoGodinho&lt;/a&gt;): &lt;a href="http://msmvps.com/blogs/nunogodinho/archive/2012/05/16/social-meet-up-for-meet-windows-azure-on-june-7th.aspx"&gt;Social Meet Up for ‘MEET Windows Azure’ on June 7th&lt;/a&gt;&lt;br /&gt;- Magnus Mårtensson (&lt;a href="http://twitter.com/noopman"&gt;@noopman&lt;/a&gt;): &lt;a href="http://www.magnusmartensson.com/post/2012/05/16/Social-meet-up-on-Twitter-for-MEET-Windows-Azure-on-June-7th.aspx"&gt;Social meet up on Twitter for MEET Windows Azure on June 7th&lt;/a&gt;&lt;br /&gt;- Maarten Balliauw (&lt;a href="http://twitter.com/maartenballiauw"&gt;@maartenballiauw&lt;/a&gt;): &lt;a href="http://blog.maartenballiauw.be/post/2012/05/17/Social-meet-up-on-Twitter-for-MEET-Windows-Azure-on-June-7th.aspx"&gt;Social meet up on Twitter for MEET Windows Azure on June 7th&lt;/a&gt;&lt;br /&gt;- Shaun Xu (&lt;a href="https://twitter.com/#!/shaunxu"&gt;@shaunxu&lt;/a&gt;) &lt;a href="http://blogs.shaunxu.me/archive/2012/05/16/letrsquos-meet-windows-azure.aspx"&gt;Let's MEET Windows Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hope this helps,&lt;/p&gt;  &lt;p&gt;Shaun&lt;/p&gt;  &lt;div style="border-bottom: #888888 1px solid; border-left: #888888 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; color: #888888; border-top: #888888 1px solid; border-right: #888888 1px solid; padding-top: 10px"&gt;&lt;i&gt;All documents and related graphics, codes are provided "AS IS" without warranty of any kind.      &lt;br /&gt;Copyright © Shaun Ziyan Xu. This work is licensed under the &lt;a title="Creative Commons Attribution License" href="http://creativecommons.org/licenses/by/3.0/" rel="external license"&gt;Creative Commons License&lt;/a&gt;. &lt;/i&gt;&lt;/div&gt;   &lt;font color="#e7e7e7"&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/shaunxu/aggbug/149662.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/6sYV9s1kzbg" height="1" width="1"/&gt;</description><dc:creator>Shaun</dc:creator><feedburner:origLink>http://geekswithblogs.net/shaunxu/archive/2012/05/16/letrsquos-meet-windows-azure.aspx</feedburner:origLink></item><item><title>IQueryable Dynamic Expressions</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/t82ARz1rcW0/iqueryable-dynamic-expressions.aspx</link><pubDate>Tue, 15 May 2012 19:19:42 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Nettuce/archive/2012/05/15/iqueryable-dynamic-expressions.aspx</guid><wfw:comment>http://geekswithblogs.net/Nettuce/comments/149661.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Nettuce/comments/commentRss/149661.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Nettuce/archive/2012/05/15/iqueryable-dynamic-expressions.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://geekswithblogs.net/Nettuce/services/trackbacks/149661.aspx</trackback:ping><source url="http://geekswithblogs.net/Nettuce/rss.aspx">IQueryable Dynamic Expressions</source><description>&lt;pre style="font-family: Consolas; font-size: 13px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(227, 213, 193); background-position: initial initial; background-repeat: initial initial; "&gt;&lt;span style="color:#400080;"&gt;public&lt;/span&gt; &lt;span style="color:#400080;"&gt;static&lt;/span&gt; &lt;span style="color:#400080;"&gt;class&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;QueryableExtensions&lt;/span&gt;
    {
        &lt;span style="color:#400080;"&gt;public&lt;/span&gt; &lt;span style="color:#400080;"&gt;static&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;IQueryable&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;T&lt;span style="color:#2e53d1;"&gt;&amp;gt;&lt;/span&gt; Filter&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;T&lt;span style="color:#2e53d1;"&gt;&amp;gt;&lt;/span&gt;(&lt;span style="color:#400080;"&gt;this&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;IQueryable&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;T&lt;span style="color:#2e53d1;"&gt;&amp;gt;&lt;/span&gt; queryable, &lt;span style="color:#305fb6;"&gt;IEnumerable&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#305fb6;"&gt;KeyValuePair&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#400080;"&gt;string&lt;/span&gt;, &lt;span style="color:#400080;"&gt;string&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;gt;&amp;gt;&lt;/span&gt; filters) &lt;span style="color:#400080;"&gt;where&lt;/span&gt; T : &lt;span style="color:#400080;"&gt;class&lt;/span&gt;
        {
            &lt;span style="color:#400080;"&gt;foreach&lt;/span&gt; (&lt;span style="color:#400080;"&gt;var&lt;/span&gt; filter &lt;span style="color:#400080;"&gt;in&lt;/span&gt; filters)
            {
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; propertyName &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(T)&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;GetProperties()&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Select(x &lt;span style="color:#2e53d1;"&gt;=&amp;gt;&lt;/span&gt; x&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Name)&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;SingleOrDefault(x &lt;span style="color:#2e53d1;"&gt;=&amp;gt;&lt;/span&gt; x&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;ToLower() &lt;span style="color:#2e53d1;"&gt;==&lt;/span&gt; filter&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Key&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;ToLower());
                &lt;span style="color:#400080;"&gt;if&lt;/span&gt; (propertyName&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;IsNullOrWhiteSpace()) &lt;span style="color:#400080;"&gt;continue&lt;/span&gt;;
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; parameterExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Parameter(&lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(T));
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; propertyExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Property(parameterExpression, propertyName);
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; toStringCallExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Call(propertyExpression, &lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(T)&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;GetMethod(&lt;span style="color:#259241;"&gt;"ToString"&lt;/span&gt;));
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; toLowerCallExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Call(toStringCallExpression, &lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#400080;"&gt;string&lt;/span&gt;)&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;GetMethod(&lt;span style="color:#259241;"&gt;"ToLower"&lt;/span&gt;, &lt;span style="color:#305fb6;"&gt;Type&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;EmptyTypes));
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; constantExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Constant(filter&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Value&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;ToLower());
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; equalExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Equal(toLowerCallExpression, constantExpression);
                &lt;span style="color:#400080;"&gt;var&lt;/span&gt; methodCallExpression &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Call(&lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#305fb6;"&gt;Queryable&lt;/span&gt;), &lt;span style="color:#259241;"&gt;"Where"&lt;/span&gt;, &lt;span style="color:#400080;"&gt;new&lt;/span&gt;[] { &lt;span style="color:#400080;"&gt;typeof&lt;/span&gt;(T) }, queryable&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Expression, &lt;span style="color:#305fb6;"&gt;Expression&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Lambda&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#305fb6;"&gt;Func&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;T, &lt;span style="color:#400080;"&gt;bool&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;gt;&amp;gt;&lt;/span&gt;(equalExpression, &lt;span style="color:#400080;"&gt;new&lt;/span&gt;[] { parameterExpression }));
                queryable &lt;span style="color:#2e53d1;"&gt;=&lt;/span&gt; queryable&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;Provider&lt;span style="color:#2e53d1;"&gt;.&lt;/span&gt;CreateQuery(methodCallExpression) &lt;span style="color:#400080;"&gt;as&lt;/span&gt; &lt;span style="color:#305fb6;"&gt;IQueryable&lt;/span&gt;&lt;span style="color:#2e53d1;"&gt;&amp;lt;&lt;/span&gt;T&lt;span style="color:#2e53d1;"&gt;&amp;gt;&lt;/span&gt;;
            }
            &lt;span style="color:#400080;"&gt;return&lt;/span&gt; queryable;
        }
    }&lt;/pre&gt; &lt;img src="http://geekswithblogs.net/Nettuce/aggbug/149661.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/t82ARz1rcW0" height="1" width="1"/&gt;</description><dc:creator>Jon Canning</dc:creator><feedburner:origLink>http://geekswithblogs.net/Nettuce/archive/2012/05/15/iqueryable-dynamic-expressions.aspx</feedburner:origLink></item><item><title>Old SQL, Top and a Variable</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/-Vb3udFPtTY/old-sql-top-and-a-variable.aspx</link><pubDate>Tue, 15 May 2012 11:48:32 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Bunch/archive/2012/05/15/old-sql-top-and-a-variable.aspx</guid><wfw:comment>http://geekswithblogs.net/Bunch/comments/149660.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Bunch/comments/commentRss/149660.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Bunch/archive/2012/05/15/old-sql-top-and-a-variable.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Bunch/services/trackbacks/149660.aspx</trackback:ping><source url="http://geekswithblogs.net/Bunch/rss.aspx">Old SQL, Top and a Variable</source><description>&lt;p&gt;I came across this the other day. Using SQL 2000 I could 
not get a Top statement to work with a variable. I had forgotten that only with 
SQL 2005 and higher could you do this trick. I found a good way around it, you 
can &lt;a href="http://sqlserver2000.databases.aspfaq.com/how-do-i-use-a-variable-in-a-top-clause-in-sql-server.html"&gt;read 
about it here&lt;/a&gt;. Anyway this works on SQL 2000:&lt;/p&gt;
&lt;p&gt;declare @top int&lt;br /&gt;set @top = 5 &lt;/p&gt;
&lt;p&gt;BEGIN&lt;br /&gt;set rowcount @top&lt;br /&gt; select Some_ID&lt;br /&gt; from tblStuff&lt;br /&gt;set 
rowcount 0&lt;br /&gt;END&lt;/p&gt;
&lt;p&gt;The code above would return the first five records from tblStuff. For any of 
the newer SQL Server version you can simply use the @top variable in Top 
like:&lt;/p&gt;
&lt;p&gt;select top (@top) Some_ID&lt;br /&gt;from tblStuff&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;&lt;p&gt;Tags: &lt;a href="http://technorati.com/tag/SQL" rel="tag"&gt;SQL&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/Bunch/aggbug/149660.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/-Vb3udFPtTY" height="1" width="1"/&gt;</description><dc:creator>Bunch</dc:creator><feedburner:origLink>http://geekswithblogs.net/Bunch/archive/2012/05/15/old-sql-top-and-a-variable.aspx</feedburner:origLink></item><item><title>Sass vs Less</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/9E-JEYL1k3Y/sass-vs-less.aspx</link><pubDate>Tue, 15 May 2012 08:42:24 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/renso/archive/2012/05/15/sass-vs-less.aspx</guid><wfw:comment>http://geekswithblogs.net/renso/comments/149659.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/renso/comments/commentRss/149659.aspx</wfw:commentRss><comments>http://geekswithblogs.net/renso/archive/2012/05/15/sass-vs-less.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/renso/services/trackbacks/149659.aspx</trackback:ping><source url="http://geekswithblogs.net/renso/rss.aspx">Sass vs Less</source><description>I know there are afew places where you can check out the differences between Sass or Less, but I thought it may be helpful for others to know why I chose one over the other.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some of my sources:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;http://sass-lang.com/&lt;/li&gt;&lt;li&gt;http://www.dotlesscss.org/&lt;/li&gt;&lt;li&gt;http://stackoverflow.com/questions/8411066/less-vs-sass-vs&lt;/li&gt;&lt;li&gt;http://coding.smashingmagazine.com/2011/09/09/an-introduction-to-less-and-comparison-to-sass/&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since my main decision was affected by my IDE I need to mention my development environment:&lt;/div&gt;&lt;div&gt;Visual Studio 2010 with Mindscape's Web Workbench&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In short I chose Sass (Syntactically Awesome Style Sheet). My main reason was that when you save the file in VS, it automatically regenerates the CSS file for SCSS on the fly, so you are able to see right away what CSS is being generated and can run your app right away. I am not in the favor of Less in this regard, as although you can specify set of handlers etc to interpret the less file on the fly, I would never use it to interpret on the fly, especially not on production servers.&lt;br /&gt;&lt;br /&gt;Also the Ruby team now ships officially with CoffeeScript and Sass by default and will be included by default in the gems when you deploy your Ruby app. Maybe another reason to use it if you're in the Rails framework.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any comments very welcome as I am am not sure if my assumptions and assertions are true.&lt;/div&gt; &lt;img src="http://geekswithblogs.net/renso/aggbug/149659.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/9E-JEYL1k3Y" height="1" width="1"/&gt;</description><dc:creator>Renso</dc:creator><feedburner:origLink>http://geekswithblogs.net/renso/archive/2012/05/15/sass-vs-less.aspx</feedburner:origLink></item><item><title>Passing in report parameters to TFS 2010 OLAP Web Parts on the Team Portal</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/UHZAvsAY7aI/passing-in-report-parameters-to-tfs-2010-olap-web-parts.aspx</link><pubDate>Tue, 15 May 2012 06:48:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BobHardister/archive/2012/05/15/passing-in-report-parameters-to-tfs-2010-olap-web-parts.aspx</guid><wfw:comment>http://geekswithblogs.net/BobHardister/comments/149635.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BobHardister/comments/commentRss/149635.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BobHardister/archive/2012/05/15/passing-in-report-parameters-to-tfs-2010-olap-web-parts.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BobHardister/services/trackbacks/149635.aspx</trackback:ping><source url="http://geekswithblogs.net/BobHardister/rss.aspx">Passing in report parameters to TFS 2010 OLAP Web Parts on the Team Portal</source><description>&lt;p&gt;There is some helpful &lt;a href="http://www.ewaldhofman.nl/post/2009/06/01/Add-SSRS-report-as-dashboard-to-sharepoint.aspx"&gt;information&lt;/a&gt; from Ewald Hofman on passing in parameters to the TFS SQL Server Analysis Services OLAP reports.&lt;/p&gt;
&lt;p&gt;But, the 2010 schema has changed. You can use the SQL Server Mgmgt Studio to access the metadata and query the tables to seee the new schema and record values. &lt;/p&gt;
&lt;p&gt;As an example of the Task Burndown report on the TFS 2010 Project Portal, here's the URL that worked in a browser:&lt;/p&gt;
&lt;p&gt;http://{your tfs server}/Reports/Pages/Report.aspx?ItemPath=%2fTfsReports%2fDefaultCollection%2fCcMsd1.0%2fDashboards%2fBurndown&amp;amp;rc%3atoolbar=false&amp;amp;rs%3aCommand=Render&amp;amp;IterationParam=[IterationName].[ParentIterationSK].%26[{the IterationSK value}]&lt;/p&gt;
&lt;p&gt;Here's the URL that was accepted in the web part:&lt;/p&gt;
&lt;p&gt;/sites/DefaultCollection/CcMsd1.0/_layouts/TfsRedirect.aspx?tf:Type=Report&amp;amp;tf:ReportName=Dashboards%2fBurndown&amp;amp;tf:ShowToolbar=0&amp;amp;Width=381pt&amp;amp;Height= 180pt&amp;amp;tf:Command=Render&amp;amp;tf:Parameters=IterationParam=[IterationName].[ParentIterationSK].%26[17]&lt;/p&gt;
&lt;p&gt;To-date though, &lt;strong&gt;even though the report processes without error, the passed in parameters don't make any difference/change in the report. So, I gave up on this approach and was somewhat successful with &lt;a href="http://agilescmtalk.com/node/24"&gt;this approach (see my subsequent blog article).&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/BobHardister/aggbug/149635.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/UHZAvsAY7aI" height="1" width="1"/&gt;</description><dc:creator>Bob Hardister</dc:creator><feedburner:origLink>http://geekswithblogs.net/BobHardister/archive/2012/05/15/passing-in-report-parameters-to-tfs-2010-olap-web-parts.aspx</feedburner:origLink></item><item><title>How I Customized Report Parameters for Team Foundation Server 2010</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/b-nQ0MYCqUE/how-i-customized-report-parameters-for-team-foundation-server-2010.aspx</link><pubDate>Tue, 15 May 2012 06:46:27 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BobHardister/archive/2012/05/15/how-i-customized-report-parameters-for-team-foundation-server-2010.aspx</guid><wfw:comment>http://geekswithblogs.net/BobHardister/comments/149634.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BobHardister/comments/commentRss/149634.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BobHardister/archive/2012/05/15/how-i-customized-report-parameters-for-team-foundation-server-2010.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BobHardister/services/trackbacks/149634.aspx</trackback:ping><source url="http://geekswithblogs.net/BobHardister/rss.aspx">How I Customized Report Parameters for Team Foundation Server 2010</source><description>&lt;p&gt;My goal was to have &lt;strong&gt;the burndown chart &lt;/strong&gt;on the team project portal main page &lt;strong&gt;display the current iteration.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The default report displays the tasks for the entire team project starting 5 days before the current date and ending 25 days after the current date. FRUSTRATING, to say the least! I mean, what a useless report! Who's Agile book did they get that one from?&lt;/p&gt;
&lt;p&gt;What I wanted was to see the burndown for the current iteration. That is, &lt;strong&gt;tasks for that iteration only &lt;/strong&gt;and that iteration starting on a &lt;strong&gt;fixed start date &lt;/strong&gt;and stopping on a &lt;strong&gt;fixed finish date.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First, I tried to implement this by passing in the parameters in the web part link url. I talked to about 4 different Microsoft people at PDC; specialist in VS ALM, SSRS, SharePoint. No one knew how to do this. See my original article on this &lt;a href="http://agilescmtalk.com/node/20"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have yet to be successful on the first approach. Which seems the most obvious way to approach it. I hope that this secret makes its way into the TFS community at some point. No wonder so few use TFS SSRS reporting! Can you sense the frustration?&lt;/p&gt;
&lt;p&gt;Then, I came across at article by John Socha-Leialoha on &lt;a href="http://www.socha.com/blogs/john/"&gt;Customizing Report Parameters for Team Foundation Server 2010.&lt;/a&gt; This article describes how I used his approach to be successful.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First, save a copy of the report definition so you can restore it if things get messed up. 
&lt;/li&gt;&lt;li&gt;To access the report definition, from the team project main page, select Reports from the left column and then navigate through the SQl Server Reporting Services (SSRS) location hierarchy to find the report. Click on it to open it. Go to the Properties tab and select the General panel. Click Edit to save a copy of the report definition file. You will need to click the Update button to browse, select and then apply the file to restore the definition 
&lt;/li&gt;&lt;li&gt;Now, to the point: select the Properties panel and set the iteration path on the report parameters page as John's blog specifies. &lt;strong&gt;Note: &lt;/strong&gt;the parameter string for iteration path [Work Item].[Iteration Hierarchy].[All] must be changed to [Work Item].[Iteration Hierarchy].[Iteration1].&amp;amp;[{ParentIterationSK}]&amp;amp;[{IterationSK}]. I had to use the MS SQL Server Mgmgt Studio (SSMS) to find out what these were. I connected to my TFS server using the SSMS, opened the Tfs_Warehouse Database and queried the rows in the dbo.DimIteration table. From here you can see what the SK values are based on the IterationPath you are interested in. &lt;strong&gt;Note2: &lt;/strong&gt;I don't know what "[Iteration1]" means for sure. It may have to do with the depth of the IterationPath Hierarchy. In my case, I'm only one level down from the root of the iteration path. So, in this case, I must use "[Iteration1]" regardless of the real iteration I want to report on. So, if the full parameter for my first iteration is: [Work Item].[Iteration Hierarchy].[Iteration1].&amp;amp;[14]&amp;amp;[17] and the SK for my second iteration is 18, my parameter for my project's second iteration looks like this: [Work Item].[Iteration Hierarchy].[Iteration1].&amp;amp;[14]&amp;amp;[18] 
&lt;/li&gt;&lt;li&gt;Next, click the "Override Default" for StartDateParam and EndDateParam. &lt;strong&gt;Note: &lt;/strong&gt;I think this is permanent for the active defintion. I think you can restore the original defintion to reset the default. Type in the start and end date you want (mm/dd/yyyy). The time will default to 12 AM, but you can change this after you have applied the first explicit date values. 
&lt;/li&gt;&lt;li&gt;Now view and display the report. You should see the report you want :) 
&lt;/li&gt;&lt;li&gt;Next, rename the report to reflect the iteration it's for 
&lt;/li&gt;&lt;li&gt;Now create the linked reports as described by John in his blog 
&lt;/li&gt;&lt;li&gt;Finally, you can easily modify the web part link url to containt the correct report name. &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;UPDATE:&lt;/strong&gt; &lt;br /&gt;In subsequent work I confirmed the syntax of the IterationParm string. For example, take - &lt;/p&gt;
&lt;p&gt;[Work Item].[Iteration Hierarchy].[Iteration1].&amp;amp;[14]&amp;amp;[18]&lt;/p&gt;
&lt;p&gt;The [Iteration1] node does prescribe the depth of the hierarchy. [Iteration1] means root to 1st level. [Iteration2] means root to 1st level to 2nd level] and so forth. The node IDs correspond to the nodes at each level.&lt;/p&gt;
&lt;p&gt;So [Work Item].[Iteration Hierarchy].[Iteration4].&amp;amp;[14]&amp;amp;[18]&amp;amp;[54]&amp;amp;[72] specifies an iteration path node at the root&amp;gt;1st&amp;gt;2nd&amp;gt;3rd level.&lt;/p&gt;
&lt;p&gt;You can obtain the SSRS report properties IterationParm value using SQL Server Management Studio. Connect using SQL Server Analysis Services and create an MDX query of the work item.iteration hiearchy path node you want to report on. See &lt;a href="http://www.socha.com/blogs/john/2009/10/customizing-report-parameters-for-team.html"&gt;this&lt;/a&gt; great article by John Socha-Leiloha for more details.&lt;/p&gt;
&lt;p&gt;Good hunting!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/BobHardister/aggbug/149634.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/b-nQ0MYCqUE" height="1" width="1"/&gt;</description><dc:creator>Bob Hardister</dc:creator><feedburner:origLink>http://geekswithblogs.net/BobHardister/archive/2012/05/15/how-i-customized-report-parameters-for-team-foundation-server-2010.aspx</feedburner:origLink></item><item><title>Using a TFS 2010 custom bug work item definition with the MTLM Test Runner</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/kR4TGQGAVnc/using-a-tfs-2010-custom-bug-work-item-definition-with.aspx</link><pubDate>Tue, 15 May 2012 06:44:29 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BobHardister/archive/2012/05/15/using-a-tfs-2010-custom-bug-work-item-definition-with.aspx</guid><wfw:comment>http://geekswithblogs.net/BobHardister/comments/149633.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BobHardister/comments/commentRss/149633.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BobHardister/archive/2012/05/15/using-a-tfs-2010-custom-bug-work-item-definition-with.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BobHardister/services/trackbacks/149633.aspx</trackback:ping><source url="http://geekswithblogs.net/BobHardister/rss.aspx">Using a TFS 2010 custom bug work item definition with the MTLM Test Runner</source><description>&lt;p&gt;We don’t use the term “Bug,” rather we use “Software Action Request” or “SAR.” I renamed the Bug WI definition from Bug to SAR. I added a few custom fields to our SAR WI definition, but all the Microsoft fields are used and unchanged.&lt;/p&gt;
&lt;p&gt;What I want is for the MTLM client to be configured to open a SAR rather than a Bug. In other words, out-of-the-box when a user is manually executing a test case with the MTLM Test Runner client and one of the steps fail, the user clicks a button to create a Bug or link to an existing Bug. &lt;/p&gt;
&lt;p&gt;The answer was provided by Rubel Singal in &lt;a href="http://blogs.msdn.com/rubel/archive/2009/12/15/how-can-i-configure-mtlm-to-use-my-custom-bug-test-case-type.aspx"&gt;this blog article.&lt;/a&gt; It works! Thank you Rubel!&lt;/p&gt;
&lt;p&gt;Happy trails!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/BobHardister/aggbug/149633.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/kR4TGQGAVnc" height="1" width="1"/&gt;</description><dc:creator>Bob Hardister</dc:creator><feedburner:origLink>http://geekswithblogs.net/BobHardister/archive/2012/05/15/using-a-tfs-2010-custom-bug-work-item-definition-with.aspx</feedburner:origLink></item><item><title>Updating an incorrect reason code after a state transition</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/JlX2vYiE0EE/updating-an-incorrect-reason-code-after-a-state-transition.aspx</link><pubDate>Tue, 15 May 2012 06:32:11 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/BobHardister/archive/2012/05/15/updating-an-incorrect-reason-code-after-a-state-transition.aspx</guid><wfw:comment>http://geekswithblogs.net/BobHardister/comments/149632.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/BobHardister/comments/commentRss/149632.aspx</wfw:commentRss><comments>http://geekswithblogs.net/BobHardister/archive/2012/05/15/updating-an-incorrect-reason-code-after-a-state-transition.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/BobHardister/services/trackbacks/149632.aspx</trackback:ping><source url="http://geekswithblogs.net/BobHardister/rss.aspx">Updating an incorrect reason code after a state transition</source><description>&lt;p&gt;When using TFS work items you may find that when you transition from one state to another that you selected the wrong reason code, or you found out shortly afterwards that the reason code you selected is incorrect.&lt;/p&gt;
&lt;p&gt;Well, you may be surprised to find that reason codes (System.Reason) cannot be updated within the same state.&lt;/p&gt;
&lt;p&gt;After some looking into, I came to understand the intent of reason code is to document the "reason" the state changed. As opposed to indicate within state changes. However, it was also clear that no out-of-the-box provision is made for correcting the reason code when the wrong one was used. I did find two different approaches that used a custom field:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://social.msdn.microsoft.com/forums/en-US/tfsworkitemtracking/thread/45f060c6-a7d5-4997-9607-714d89c1c6ab/"&gt;One&lt;/a&gt; replaces System.Reason with a custom field. &lt;a href="http://blogs.msdn.com/teams_wit_tools/archive/2009/03/31/work-item-rules-workaround-saving-the-resolved-reason.aspx"&gt;Another&lt;/a&gt; uses a custom field that gets populated from System.Reason and can then be updated. &lt;/p&gt;
&lt;p&gt;I appreciate the approach of using a custom field, as shown in the article. However, wanting to minimize custom code, I took the following approach:&lt;/p&gt;
&lt;p&gt;Using the Process Editor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I simply created an "Update [state] Reason Code" state 
&lt;/li&gt;&lt;li&gt;The transition reason to this state is "Current reason code is incorrect." 
&lt;/li&gt;&lt;li&gt;The transition back provides the list of reason codes to chose from &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This was easy and leverages the existing fields and functionality. It also provides a nice, concise history and allows the application of permissions to limit who can do this. I found I didn't need to use this on most of my states because many of them can already go back to the immediately prior state and so it amounts to the same thing. Using it on the initial state (Submitted) and Close will be very helpful.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/BobHardister/aggbug/149632.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/JlX2vYiE0EE" height="1" width="1"/&gt;</description><dc:creator>Bob Hardister</dc:creator><feedburner:origLink>http://geekswithblogs.net/BobHardister/archive/2012/05/15/updating-an-incorrect-reason-code-after-a-state-transition.aspx</feedburner:origLink></item><item><title>Azure Presentation at VS Live!</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/v6lrnElcX3w/azure-presentation-at-vs-live.aspx</link><pubDate>Tue, 15 May 2012 06:20:14 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/michelotti/archive/2012/05/15/azure-presentation-at-vs-live.aspx</guid><wfw:comment>http://geekswithblogs.net/michelotti/comments/149631.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/michelotti/comments/commentRss/149631.aspx</wfw:commentRss><comments>http://geekswithblogs.net/michelotti/archive/2012/05/15/azure-presentation-at-vs-live.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/michelotti/services/trackbacks/149631.aspx</trackback:ping><source url="http://geekswithblogs.net/michelotti/rss.aspx">Azure Presentation at VS Live!</source><description>&lt;p&gt;Tomorrow I will be presenting “&lt;a href="http://vslive.com/Events/New-York-2012/Sessions/Wednesday/W07-Building-Scalable-Apps-in-Windows-Azure.aspx"&gt;Building Scalable Apps in Windows Azure&lt;/a&gt;” at &lt;a href="http://vslive.com/events/new-york-2012/home.aspx"&gt;VS Live in New York City&lt;/a&gt;. I will be co-presenting with my colleague &lt;a href="http://vlele.wordpress.com/"&gt;Vishwas Lele&lt;/a&gt; of Azure fame. Should be a great event!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/michelotti/aggbug/149631.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/v6lrnElcX3w" height="1" width="1"/&gt;</description><dc:creator>Steve Michelotti</dc:creator><feedburner:origLink>http://geekswithblogs.net/michelotti/archive/2012/05/15/azure-presentation-at-vs-live.aspx</feedburner:origLink></item><item><title>"Read It Later Pro" has been ruined into Pocket, but RIL Free is still usable.</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/Q-n9RB4WkQA/read-it-later-pro-has-been-ruined-into-pocket-but.aspx</link><pubDate>Tue, 15 May 2012 11:13:17 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/mnf/archive/2012/05/15/read-it-later-pro-has-been-ruined-into-pocket-but.aspx</guid><wfw:comment>http://geekswithblogs.net/mnf/comments/149630.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/mnf/comments/commentRss/149630.aspx</wfw:commentRss><comments>http://geekswithblogs.net/mnf/archive/2012/05/15/read-it-later-pro-has-been-ruined-into-pocket-but.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/mnf/services/trackbacks/149630.aspx</trackback:ping><source url="http://geekswithblogs.net/mnf/rss.aspx">"Read It Later Pro" has been ruined into Pocket, but RIL Free is still usable.</source><description>&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;I loved RIL Pro for iPad and used it every day, but about a month ago I was forced to upgrade to new version, named &lt;a href="http://help.getpocket.com/"&gt;Pocket&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;The new version has so many problems, that it's almost unusable.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;div&gt;The main issue is that iPad app doesn't show many of the saved links. &lt;/div&gt;&lt;div&gt;I've posted my opinion that it would be better to have  Pocket as a new separate application and recommend users to install it side by side with RIL Pro and try before replace&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span&gt;at Pocket forum &lt;/span&gt; APR 20, 2012 &lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;&lt;a href="http://help.getpocket.com/customer/portal/questions/290569-auto-update-to-pocket-wasn-t-a-god-idea" data-mce-href="http://help.getpocket.com/customer/portal/questions/290569-auto-update-to-pocket-wasn-t-a-god-idea"&gt;http://help.getpocket.com/customer/portal/questions/290569-auto-update-to-pocket-wasn-t-a-god-idea&lt;/a&gt; .It's still unanswered.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;I found that there a many other threads that report different issues with a new version and I've posted a few comments, supporting suggestions to fix the issues, that were broken by the Pocket.(e.g. &lt;a href="http://help.getpocket.com/customer/portal/questions/286093-i-ve-lost-items"&gt;here&lt;/a&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt; Pocket agents answered only a  small number of questions, and many of their answers&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;were unreasonable- like "We removed this feature because it is not convenient for our future plans"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;Example of this is still stored in &lt;a href="http://webcache.googleusercontent.com/search?q=cache:d82fRjlYWLYJ:help.getpocket.com/customer/portal/questions/282273-refund-required-for-digest-+&amp;amp;cd=2&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=au"&gt;Google cache &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;24Apr I've &lt;a href="http://webcache.googleusercontent.com/search?q=cache:OdgkHRhtq0MJ:help.getpocket.com/customer/portal/questions/300216-please-restore-ril-pro-in-appstore+&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=au"&gt;posted a request&lt;/a&gt; to restore RIL Pro in AppStore until they will fix the problems in pocket.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;&lt;/span&gt;From 27 April they introduced moderation on the public forum and stopped show new posts.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;Actually &lt;span&gt;"moderation" is not a correct work, it's converted the &lt;/span&gt;&lt;span&gt;forum into Q&amp;amp;A site, where they show only posts with answers that they like.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;&lt;/span&gt;Furthermore they removed many discussion threads that existed on the forum before the "moderation".&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;When I pointed to this in email, the answer was un-reasonable-that their forum is actually not a forum, but "a &lt;span&gt;helpful support site where users can get their questions answered"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;In fact users post public questions and do not see them posted for a week or forever.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;For couple of my questions I received email starting with the words&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;    "An agent has responded to your question (Link to Question&amp;lt;&lt;/span&gt;&lt;a href="http://readitlater.assistly.com/customer/portal/questions/306173-sync-in-ril-free-stopped-working" target="_blank" data-mce-href="http://readitlater.assistly.com/customer/portal/questions/306173-sync-in-ril-free-stopped-working"&gt;http://readitlater.assistly.com/customer/portal/questions/306173-sync-in-ril-free-stopped-working&lt;/a&gt;&lt;span&gt;&amp;gt;)."&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;But the link is not working, because they deleted the discussion from the forum.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;At the beginning of May Pocket support answered that the  "&lt;span&gt;known issue with a partial list sync" is addressed and will be in the next upgrade.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span&gt;Despite the statement in upgrade notes, &lt;/span&gt;next upgrade didn't help with the problem(at least for me).&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;Support  replied to me, that  "&lt;span&gt;it seems as though a&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em&gt;&lt;strong&gt;small&lt;/strong&gt;&lt;/em&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;handful of users are still experiencing this sync discrepancy."&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;27Apr I've reported that "&lt;a href="http://webcache.googleusercontent.com/search?q=cache:XgM0LfwwlVkJ:help.getpocket.com/customer/portal/questions/306173-sync-in-ril-free-stopped-working+&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=au"&gt;Sync in RIL Free stopped working&lt;/a&gt;" and it was on forum at least until 6 May(according Google cache)&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;span class="il"&gt;10 May I received a reply via email(but post has been removed from the forum)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;font color="#006400"&gt;&lt;strong&gt;&lt;span class="il"&gt;"The&lt;/span&gt;&lt;span&gt; fix is &lt;/span&gt;&lt;span class="il"&gt;to&lt;/span&gt;&lt;span&gt; log out of Read It Later Free, and then log back in. Although your local cache will be cleared, &lt;/span&gt;&lt;span class="il"&gt;the&lt;/span&gt;&lt;span&gt; app will go through your list and re-download your items."&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"&gt;&lt;div dir="ltr"&gt; It was the first useful advice after introducing Pocket. Now I am able to use RIL Free. With all it's limitation RIL Free is in much more workable conditions, than Pocket. It shows all articles that I've saved and it allowed to rename titles. The only feature from RIL Pro, that I really missing, is the ability to filter only untagged articles.&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;So now I can read all my saved articles in &lt;font color="#006400"&gt;&lt;strong&gt;RIL Free&lt;/strong&gt; &lt;/font&gt;and wait until they will fix the Pocket.&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;The conclusion I've had is that the Pocket company doesn't respect their customers, and I should not rely on their products too much. However the application is quite convenient, and I am familiar with it, so I will continue to use it. &lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" dir="ltr"&gt;The company's  behaviour reminds me how Google changed layout of iGoogle tabs and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://groups.google.com/group/google_web_search_help-personalizing/browse_thread/thread/dad1756deccbae18/24fe849f9ce936eb?hl=en#24fe849f9ce936eb" data-mce-href="http://groups.google.com/group/google_web_search_help-personalizing/browse_thread/thread/dad1756deccbae18/24fe849f9ce936eb?hl=en#24fe849f9ce936eb"&gt;ignored hundreds of complains&lt;/a&gt;. Note that recently (4 years later) Google returned to layout similar to original.&lt;/div&gt;&lt;br class="Apple-interchange-newline" /&gt; &lt;img src="http://geekswithblogs.net/mnf/aggbug/149630.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/Q-n9RB4WkQA" height="1" width="1"/&gt;</description><dc:creator>Michael Freidgeim</dc:creator><feedburner:origLink>http://geekswithblogs.net/mnf/archive/2012/05/15/read-it-later-pro-has-been-ruined-into-pocket-but.aspx</feedburner:origLink></item><item><title>2012 Transit of Venus - First Web Camera located.</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/xX4D7qnJrQk/2012-transit-of-venus---first-web-camm-located.aspx</link><pubDate>Tue, 15 May 2012 10:18:40 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2012/05/15/2012-transit-of-venus---first-web-camm-located.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/149629.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/149629.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2012/05/15/2012-transit-of-venus---first-web-camm-located.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/149629.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">2012 Transit of Venus - First Web Camera located.</source><description>Since the 2012 Transit of Venus is the last transit of Venus across the face of the Sun as viewed from Earth, for many years, being able to locate a web cam feed that will be in clear daylight for the whole of the transit period. So far I have only located one. &lt;br /&gt;&lt;br /&gt;This is at:  &lt;a target="_blank" href="http://www.transitofvenus.com.au/HOME.html"&gt;http://www.transitofvenus.com.au/HOME.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Historically the transit of Venus was very important for determining the absolute size of the solar system, however high power radar has allowed direct measurement of distance at any time.&lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/149629.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/xX4D7qnJrQk" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2012/05/15/2012-transit-of-venus---first-web-camm-located.aspx</feedburner:origLink></item><item><title>Debugging Castle WcfFacility installers</title><link>http://feedproxy.google.com/~r/geekswithblogs/~3/XagVPF9HT8M/debugging-castle-wcffacility-installers.aspx</link><pubDate>Tue, 15 May 2012 08:00:59 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx</guid><wfw:comment>http://geekswithblogs.net/jeremyj/comments/149628.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jeremyj/comments/commentRss/149628.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/jeremyj/services/trackbacks/149628.aspx</trackback:ping><source url="http://geekswithblogs.net/jeremyj/rss.aspx">Debugging Castle WcfFacility installers</source><description>&lt;div&gt;Stepping through IWindsorInstaller implementations in web services created using the WcfFacility&lt;sup&gt;[1]&lt;/sup&gt;
 is not as immediately accessible compared to debugging 
the start up of a console application. Just pressing F5 with the web service set as a start up 
project causes the start up code to have already been run before 
the debugger attaches to the IIS worker process. Fortunately there is a 
simple way of causing the start up code to be re-run whilst remaining 
attached to the IIS worker process, so that you can step through your 
Castle installers and access the debugger views.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

&lt;span class="pullout"&gt;Once you've attached to the worker process under the debugger
 you can just rebuild the web service project to force IIS to 
re-initialize the newly built assembly when it is next exercised.&lt;/span&gt;
&lt;div&gt; 
Once you've attached to the worker process under the debugger&lt;sup&gt;[2]&lt;/sup&gt;
 you can just rebuild the web service project to force IIS to 
re-initialize the newly built assembly when it is next exercised.
The 
IDE won't normally let you do this&lt;sup&gt;[3]&lt;/sup&gt; so you have to build 
the web service project outside the IDE that is running the debugger. Of
 the various ways of doing this i'd like to suggest running the .csproj 
file directly in MSBuild.exe on the command line (because it means that 
just pressing the up arrow and enter in the command window will easily 
let you re-build). So with the debugger attached to the IIS worker 
process of your web service, just re-build the web service project on 
the command line e.g. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Web.Service.csproj&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As
 soon as you call any of its operations IIS will re-initialize the 
service causing the breakpoints to be hit. I hope this saved you some 
frustration as it took me a while to figure this one out. Happy 
Debugging.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[1] If you are using the Castle WcfFacility your My.Web.Service.svc will probably look something like this -&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;%@ ServiceHost Language="C#" &lt;/div&gt;&lt;div&gt;                Debug="true" &lt;/div&gt;&lt;div&gt;                Service="My.Web.Service" &lt;/div&gt;&lt;div&gt;                Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[2]  I.e.
 either you've just hit F5 with the web service project as the start up 
project, or you've attached to the worker process by selecting it in the
 processes list (If the worker process isn't showing in the list it 
might be because it isn't yet running, the worker process hosting the 
application pool can be started just by calling one of the web service 
operations. Alternatively you might have to tick the box to include 
processes from all sessions.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[3] I've 
definitely seen a bug in VS2010 SP1 where under rare circumstances it 
will let you, i have been able to do this once but now have no idea how 
to reproduce this issue now...&lt;/div&gt; &lt;img src="http://geekswithblogs.net/jeremyj/aggbug/149628.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/~4/XagVPF9HT8M" height="1" width="1"/&gt;</description><dc:creator>jeremyj</dc:creator><feedburner:origLink>http://geekswithblogs.net/jeremyj/archive/2012/05/15/debugging-castle-wcffacility-installers.aspx</feedburner:origLink></item></channel></rss>

