TSQL: Use common table expression

With common table expressions you can save the results to a temporary result set and use this results set for other queries.


WITH temporaryNamedResultSet
AS
(
  select UserName from aspnet_Users
)
select * from temporaryNamedResultSet


Asp.Net: invoke WCF method with WCF Test Client

When deploying a Silverlight application we ran into problems a WCF web-service, to find out what the problem was I wanted to invoke the method.

Microsoft shipped an application for invoking methods from your Windows PC (WCFtestclient.exe). The following steps explain how to use WCFtestclient.exe.

First startup Visual Studio 2008 Command Prompt. In the command prompt type wcftestclient, the application will startup.

Now we need to add the Service. Click File and Add Service.

 

Add the URL to your service in the pop-up and pres ok. The service will now add all methods from your service. You can add multiple service URLs.

Double click the method you want to invoke from the tree on the left pane. Enter the values that are required for the Invoke and press Invoke. The method will be invoked.

The right bottom pane will show the response. In my case this shows the Stack-trace because of the error. Normally this will show the web-service response (XML).

With the stack-trace I could located the error and fix it.

Hope this helps,

Pieter

XSL: for-each with max items

While working with Umbraco and Sitecore I learned some Xsl tricks.

The following example shows how to show the first 10 items in a HTML list.


<ul>

  

    &lt;xsl:if test=&quot;position()

      <li>

 <a href="{@link}">

   

  </a>

      </li>

    

  

</ul>


LINQ: Creating a if statement in Linq query

A lot of times I need to check a statement within my LINQ-query and I wish there was a possibility of a IF statement within LINQ.

The following code is the solution to my IF problem. I use a temporary variable (let isOlderThen30) to check if a statement is true. Then in my WHERE statement I use the temporary variable in a INFLINE IF.

For this example I use my Blogger class with some data



public class Blogger
{
 public string FirstName { get; set; }
 public string LastName { get; set; }
 public int Age { get; set; }
 public string Blog { get; set; }
}

List personList = new List{
 new Blogger { FirstName = "Pieter", LastName = "Brinkman", Age = 27, Blog = "http://blog.newguid.net" },
 new Blogger { FirstName = "Mark", LastName = "van Aalst", Age = 26, Blog = "http://www.markvanaalst.com" },
 new Blogger { FirstName = "Bas", LastName = "Hammendorp", Age = 32, Blog = "http://www.hammendorp.net" }
};


It’s kind of hard to think of a easy good example, but here it is. In this example I want to set the Age property to “Older then 30” when the Blogger is older then 30 (how useful!).


//If a blogger is older then set Age text to "Older then 30"

var rawList = from item in personList
  let <strong>isOlderThen30</strong> = item.Age &gt; 30
  select new
  {
   Name = item.FirstName,
   Age = (isOlderThen30 ? "Older then 30" : item.Age.ToString()),
  };

//GENERATE OUTPUT

foreach (var item in rawList)
{
 Response.Write(item.Name + " (" + item.Age + ")<br />");
}

//OUTPUT
//Pieter (27)
//Mark (26)
//Bas (Older then 30)


Hope that the example is clear. If you have any questions let me know.

// UPDATE (3 aug 2009) //

I thought about the codeexample and offcourse you can do it shorter (but less readable with complex queries).


var rawList = from item in personList
  select new
  {
   Name = item.FirstName,
   Age = (item.Age &gt; 30 ? "Older then 30" : item.Age.ToString()),
  };


Linq to Xml: Generate Google Sitemap with sitemap-protocol

In this example I will generate a XML site-map that complies with the sitemap-protocol XML schema.


//create datasource

List blogPosts = new List{
 "http://blog.newguid.net/mypost1.aspx",
 "http://blog.newguid.net/mypost_about_Net.aspx",
 "http://blog.newguid.net/morePosts.aspx",
 "http://blog.newguid.net/andEvenMorePosts.aspx"
};

//Create namespace for sitemap-protocol

XNamespace xmlNS = "http://www.sitemaps.org/schemas/sitemap/0.9";
XDocument xmlDoc =
 new XDocument(
  new XDeclaration("1.0", "UTF-8", null),
  new XElement(xmlNS + "urlset",
   from blogPostUrl in blogPosts
   select
    new XElement(xmlNS + "url",
    new XElement(xmlNS + "loc", blogPostUrl))
    ));

//Show output

Response.Write(xmlDoc);


This example will give the following output:


&lt;urlset xmlns=&quot;<a href="http://www.sitemaps.org/schemas/sitemap/0.9">http://www.sitemaps.org/schemas/sitemap/0.9</a>"&gt;
  
    http://blog.newguid.net/mypost1.aspx
  
  
    http://blog.newguid.net/mypost_about_Net.aspx
  
  
    http://blog.newguid.net/morePosts.aspx
  
  
    http://blog.newguid.net/andEvenMorePosts.aspx
  



To keep the example as simple as possible I only use the LOC element of the URL node. In the real world you can implement the lastmod, changefreq and priority node.

More information about the sitemap-protocol.

Add meta data (keywords, description) dynamicly

Add meta-data dynamically to your page by adding a HtmlMeta control to your Header. In this example I dynamically add a keyword string to the page.


string keyWords = "metatags, html, dynamic, generate";

HtmlMeta keywords = new HtmlMeta();
keywords.Name = "keywords";
keywords.Content = keyWords;
Page.Header.Controls.Add(keywords); 


You can do the same for other meta-data like description.

Linq Casting: ToDictionary()

In this post I will give an example how to cast a GenericList to Dictionary.

This example will use the following Blogger class.


public class Blogger
{
 public string FirstName { get; set; }
 public string LastName { get; set; }
 public int Age { get; set; }
 public string Blog { get; set; }
}


The example will cast a List<Blogger> to a dictionary with key FirstName, Lastname and value the Age of the blogger.


// DECLARE PERSONLIST

List personList = new List();
personList.Add(new Blogger { FirstName = "Pieter", LastName = "Brinkman", Age = 27, Blog = "http://blog.newguid.net" });
personList.Add(new Blogger { FirstName = "Mark", LastName = "van Aalst", Age = 26, Blog = "http://www.markvanaalst.com/" });
personList.Add(new Blogger { FirstName = "Bas", LastName = "Hammendorp", Age = 32, Blog = "http://www.hammendorp.net/" });

// CREATE NEW DICTIONARY FROM LIST
// with key FirstName + LastName and value Age

Dictionary AgeDictionary =
 personList.ToDictionary(x =&gt; x.FirstName + " " + x.LastName,
       x =&gt; x.Age,
       StringComparer.OrdinalIgnoreCase);

// GENERATE OUTPUT

foreach (KeyValuePair item in AgeDictionary)
 Response.Write("key: " + item.Key + " - value: " + item.Value + "<br />");

//// OUTPUT
//key: Pieter Brinkman - value: 27
//key: Mark van Aalst - value: 26
//key: Bas Hammendorp - value: 32


 Hope it helps.