<?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:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Manoj Nagpal's Blog</title>
    <description>on life influenced by technology</description>
    <link>http://www.manojn.com/blog/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-AU</language>
    <blogChannel:blogRoll>http://www.manojn.com/blog/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Manoj Nagpal</dc:creator>
    <dc:title>Manoj Nagpal's Blog</dc:title>
    <geo:lat>-37.810682</geo:lat><geo:long>144.962506</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/manojn" type="application/rss+xml" /><feedburner:emailServiceId>manojn</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Using jQuery Google Charts (JGCharts) with ASP.NET application</title>
      <description>&lt;p&gt;I had been looking for a light weight charting library that I could use with my ASP.NET application for a while now. There are a &lt;a href="http://www.reynoldsftw.com/2009/02/6-jquery-chart-plugins-reviewed/" target="_blank"&gt;number of charting libraries with jQuery&lt;/a&gt; but I found the &lt;a href="http://www.maxb.net/scripts/jgcharts/include/demo/" target="_blank"&gt;jQuery wrapper for Google Charts&lt;/a&gt; by Massimiliano Balestrieri to be efficient and simple to use.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In this tutorial I will show you how to integrate &lt;a href="http://www.maxb.net/scripts/jgcharts/include/demo/" target="_blank"&gt;jQuery Google Charts 1.0&lt;/a&gt; with your ASP.NET application.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/UsingjQueryGoogleChartsJG.NETapplication/1010FEAC/sshot1.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Income and Expense Chart" border="0" alt="Income and Expense Chart" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/UsingjQueryGoogleChartsJG.NETapplication/43C8CF30/sshot1_thumb.png" width="640" height="255" /&gt;&lt;/a&gt;Let us start by downloading the libraries required for this to work. We need two JavaScript files to be downloaded:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js" target="_blank"&gt;jQuery 1.3.2 Minified Version&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.maxb.net/scripts/jgcharts/jgcharts-0.97.zip" target="_blank"&gt;jgcharts Library&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Next is to create or open an existing ASP.NET web page that will display the chart, and include these libraries in the HEAD section of the page.&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; highlight: [4,5]; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Chart.aspx.cs&amp;quot; Inherits=&amp;quot;Chart&amp;quot; %&amp;gt;
&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;jQuery Google Chart Demo&amp;lt;/title&amp;gt;
    &amp;lt;script src=&amp;quot;jquery-1.3.2.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&amp;quot;jgcharts.pack.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;form id=&amp;quot;dform&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/pre&gt;

&lt;p&gt;Within the BODY tags of this page, Let us create two DIV’s, one to display the chart (bar_chart) and another one to display the data (bar_chart_data). A Hidden field is also defined that will hold the JavaScript Array of the GridView data. This will be used by the Charting Library on the client side to display the Bar Chart.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 7; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;&amp;lt;body&amp;gt;
    &amp;lt;form id=&amp;quot;dform&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
        &amp;lt;h4&amp;gt;Income and Expense Overview&amp;lt;/h4&amp;gt;
        &amp;lt;div id=&amp;quot;bar_chart&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
        &amp;lt;div id=&amp;quot;bar_chart_data&amp;quot;&amp;gt;
            &amp;lt;asp:HiddenField ID=&amp;quot;hidChartData&amp;quot; runat=&amp;quot;server&amp;quot; /&amp;gt;
            &amp;lt;asp:GridView ID=&amp;quot;grvIncomeExp&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;
                &amp;lt;Columns&amp;gt;
                    &amp;lt;asp:BoundField DataField=&amp;quot;Month&amp;quot; HeaderText=&amp;quot;Month&amp;quot; DataFormatString=&amp;quot;{0:c}&amp;quot; /&amp;gt;
                    &amp;lt;asp:BoundField DataField=&amp;quot;Income&amp;quot; HeaderText=&amp;quot;Income&amp;quot; DataFormatString=&amp;quot;{0:c}&amp;quot; /&amp;gt;
		            &amp;lt;asp:BoundField DataField=&amp;quot;Expense&amp;quot; HeaderText=&amp;quot;Expense&amp;quot; DataFormatString=&amp;quot;{0:c}&amp;quot; /&amp;gt;
		        &amp;lt;/Columns&amp;gt;
            &amp;lt;/asp:GridView&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;&lt;/pre&gt;

&lt;p&gt;Within the HEAD tag of this page, you will need to create a jQuery call to initiate the Charting api’s and create graph based on data available in “hidChartData” hidden field.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 4; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;jQuery Google Chart Demo&amp;lt;/title&amp;gt;
    &amp;lt;script src=&amp;quot;JQuery/jquery-1.3.2.min.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&amp;quot;JQuery/jgcharts.pack.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;
        $(document).ready(function()
        {
            var api = new jGCharts.Api();
            var opt = 
            { 
                data : eval($(&amp;quot;[id$='hidChartData']&amp;quot;).val()),   
                axis_labels : ['01','02','03','04','05','06','07','08','09','10','11','12'],
                legend : ['Income', 'Expense'],
                size : '600x335',
                bar_width : 15
            };
            jQuery('&amp;lt;img&amp;gt;').attr('src', api.make(opt)).appendTo(&amp;quot;#bar_chart&amp;quot;); 
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;&lt;/pre&gt;

&lt;p&gt;If you now look at the page in the browser – you should see a blank bar chart without any data in it. This is because we have not bound the data to the Hidden Field (hidChartData) and the GridView.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/UsingjQueryGoogleChartsJG.NETapplication/40673788/sshot2.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Bar Chart without Data" border="0" alt="Bar Chart without Data" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/UsingjQueryGoogleChartsJG.NETapplication/62036059/sshot2_thumb.png" width="640" height="311" /&gt;&lt;/a&gt;Lets now look add a Page_Load function in the code behind. This event handler will bind data to the GridView and assign the value to the HiddenField with a JavaScript array of data.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;protected void Page_Load(object sender, EventArgs e)
{
        DataTable dTable = GetSampleData();
        grvIncomeExp.DataSource = dTable;
        grvIncomeExp.DataBind();

        ArrayList chartData = new ArrayList();
        foreach (DataRow dr in dTable.Rows)
        {
            chartData.Add(String.Format(&amp;quot;[{0}, {1}]&amp;quot;, dr[1], dr[2].ToString().Replace(&amp;quot;-&amp;quot;, &amp;quot;&amp;quot;)));
        }

        //Convert .NET Array to JS Array
        string ReturnValue = String.Empty;
        for (int i = 0; i &amp;lt; chartData.Count; i++)
        {
            ReturnValue += chartData[i];
            if (i != chartData.Count - 1)
                ReturnValue += &amp;quot;,&amp;quot;;
        }

        //Data is returned in the following format: 
        //[[1000, 3003.55],[1000, 72.65],[1000, 760.89],[1000, 354.55],[1000, 180.52],[1000, 408.54],[0, 0],[0, 0],[0, 0],[0, 0],[0, 0],[0, 0]]

        hidChartData.Value = String.Format(&amp;quot;[{0}]&amp;quot;, ReturnValue);
}&lt;/pre&gt;

&lt;p&gt;This will create the chart displayed in the first Image. NOTE: I have removed all CSS styles to make the code more readable.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;You can also &lt;a href="http://www.manojn.com/blog/file.axd?file=2009%2f6%2fJGChartsDemo.zip"&gt;download&lt;/a&gt; this sample code.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/fVNNAqPl-hI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/fVNNAqPl-hI/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/06/10/Using-jQuery-Google-Charts-(JGCharts)-with-ASPNET-application.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=c3065369-7a58-457e-a6a6-6eeca0d6ad66</guid>
      <pubDate>Wed, 10 Jun 2009 23:13:38 -1300</pubDate>
      <category>jQuery</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=c3065369-7a58-457e-a6a6-6eeca0d6ad66</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=c3065369-7a58-457e-a6a6-6eeca0d6ad66</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/06/10/Using-jQuery-Google-Charts-(JGCharts)-with-ASPNET-application.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=c3065369-7a58-457e-a6a6-6eeca0d6ad66</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=c3065369-7a58-457e-a6a6-6eeca0d6ad66</feedburner:origLink></item>
    <item>
      <title>Group by Multiple Columns using Anonymous Types in LINQ to SQL</title>
      <description>&lt;p&gt;I believe LINQ is a very nice advancement in creating database oriented applications as it allows us to separate application logic from the database. I have been using LINQ to SQL in my recent reporting application and have used various queries with ease. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With the power of Anonymous Types, I was able to create a number of reports with different grouping senarios. &lt;a href="http://msdn.microsoft.com/en-us/library/bb397696.aspx" target="_blank"&gt;Anonymous Types&lt;/a&gt; as defined in the C# programming guide:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Anonymous types provide a convenient way to encapsulate a set of read-only properties into a single object without having to first explicitly define a type. The type name is generated by the compiler and is not available at the source code level. The type of the properties is inferred by the compiler.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Let’s look at a few ways of Grouping using Anonymous Types. Before we start, displayed below is the sample data used in the queries below:&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Sample Data" border="0" alt="Sample Data" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/MultipleGroupinginLINQtoSQL/6FE404EF/sshot5_thumb.png" width="513" height="480" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Simple Group by Anonymous Type – Grouping by Month and Year in a Date&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The purpose of this query is to group transactions in the table and retrieve a list of unique months and years in a simple list.&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;var months = from t in db.TransactionData
	group t by new { month = t.Date.Month, year = t.Date.Year } into d
	select new { t.Key.month, t.Key.year };&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/MultipleGroupinginLINQtoSQL/481D3D2B/sshot2.png"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Transactions Grouped by Month and Year" border="0" alt="Transactions Grouped by Month and Year" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/MultipleGroupinginLINQtoSQL/216EB0DE/sshot2_thumb.png" width="217" height="202" /&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;Group by Database Column and then by Anonymous Type – Grouping by Expense Category and Monthly Total&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The purpose of this query is to group all database records by Category first and then display a Total Expense based on the month in a simple list.&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;var categoryExpense = from t in db.TransactionData
	group t by t.Category into g
	select new
	{
		Category = g.Key,
		Items = from i in g
			group i by new { month = i.Date.Month, year = i.Date.Year } into d
			select new { Date = String.Format(&amp;quot;{0}/{1}&amp;quot;, d.Key.month, d.Key.year ), Amt = d.Sum(s =&amp;gt; s.Amount) }		 
	};&lt;/pre&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Multiple Group" border="0" alt="Multiple Group" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/MultipleGroupinginLINQtoSQL/50DD1FAA/sshot3_thumb.png" width="220" height="480" /&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Group by Anonymous Type and then by Database Column – Grouping by Month and then by Expense Category and Category Total&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The purpose of this query is the opposite of the group query 2. We will first group by the Month and then group by the Category Total:&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;var monthlyExpenses = from t in db.TransactionData
	group t by new { month = y.Date.Month, year = y.Date.Year } into g
	select new
	{
		Month = String.Format(&amp;quot;{0}/{1}&amp;quot;, g.Key.month, g.Key.year),
		Items = from i in g
		group i by new { i.Category } into d
		select new
		{
			Amt = d.Sum(s =&amp;gt; s.Amount) 
		}
	};&lt;/pre&gt;

&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Multiple Group" border="0" alt="Multiple Group" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/MultipleGroupinginLINQtoSQL/2CF44850/sshot4_thumb.png" width="240" height="768" /&gt; &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;With SQL you can seamlessly do all of the above on XML, &lt;a href="http://www.codeproject.com/KB/linq/LINQtoCSV.aspx" target="_blank"&gt;CSV files&lt;/a&gt; or .NET Objects as well.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Recommend Resources to Learn more about LINQ to SQL&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Mike Taulty’s - &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/10/9322.aspx" target="_blank"&gt;Introduction to LINQ Videos&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;Scott Gu’s – &lt;em&gt;Highly Recommended&lt;/em&gt; 

    &lt;ul&gt;
      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx" target="_blank"&gt;Part 1: Introduction to LINQ to SQL&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/05/29/linq-to-sql-part-2-defining-our-data-model-classes.aspx" target="_blank"&gt;Part 2: Defining our Data Model Classes&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx" target="_blank"&gt;Part 3: Querying our Database&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx" target="_blank"&gt;Part 4: Updating our Database&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/07/16/linq-to-sql-part-5-binding-ui-using-the-asp-linqdatasource-control.aspx" target="_blank"&gt;Part 5: Binding UI using the ASP:LinqDataSource Control&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx" target="_blank"&gt;Part 6: Retrieving Data Using Stored Procedures&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/23/linq-to-sql-part-7-updating-our-database-using-stored-procedures.aspx" target="_blank"&gt;Part 7: Updating our Database using Stored Procedures&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx" target="_blank"&gt;Part 8: Executing Custom SQL Expressions&lt;/a&gt; &lt;/li&gt;

      &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx" target="_blank"&gt;Part 9: Using a Custom LINQ Expression with the &amp;lt;asp:LinqDatasource&amp;gt; control&lt;/a&gt; &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/-Ng7g6FHBeo" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/-Ng7g6FHBeo/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/06/10/Group-by-Multiple-Columns-using-Anonymous-Types-in-LINQ-to-SQL.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=1b125a62-59b5-4902-854e-19bc7c3e2d92</guid>
      <pubDate>Wed, 10 Jun 2009 21:00:48 -1300</pubDate>
      <category>LINQ</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=1b125a62-59b5-4902-854e-19bc7c3e2d92</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=1b125a62-59b5-4902-854e-19bc7c3e2d92</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/06/10/Group-by-Multiple-Columns-using-Anonymous-Types-in-LINQ-to-SQL.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=1b125a62-59b5-4902-854e-19bc7c3e2d92</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=1b125a62-59b5-4902-854e-19bc7c3e2d92</feedburner:origLink></item>
    <item>
      <title>Finding Min or Max Date using LINQ to SQL</title>
      <description>&lt;p&gt;In one of my recent project, I had to retrieve Minimum and Maximum date from the result set using LINQ to SQL. I was really surprised how easy it was:&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;//Retrieve Minimum Date
var MinDate = (from d in dataRows select d.Date).Min();

//Retrieve Maximum Date
var MaxDate = (from d in dataRows select d.Date).Max(); &lt;/pre&gt;

&lt;p&gt;In its simplest form, all you have to do is have .Min() or .Max() at the end of your LINQ query. That’s it. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/UfhmVfE2Xu4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/UfhmVfE2Xu4/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/06/10/Finding-Min-or-Max-Date-using-LINQ-to-SQL.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=7f1374db-61ff-4992-b13b-ee41da312995</guid>
      <pubDate>Wed, 10 Jun 2009 18:38:32 -1300</pubDate>
      <category>LINQ</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=7f1374db-61ff-4992-b13b-ee41da312995</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=7f1374db-61ff-4992-b13b-ee41da312995</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/06/10/Finding-Min-or-Max-Date-using-LINQ-to-SQL.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=7f1374db-61ff-4992-b13b-ee41da312995</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=7f1374db-61ff-4992-b13b-ee41da312995</feedburner:origLink></item>
    <item>
      <title>BlackNewspaper – free BlogEngine.NET theme</title>
      <description>&lt;p&gt;Introducing BlackNewspaper a free BlogEngine.NET theme. This theme is a modified version of an existing theme called &lt;a href="http://www.jankoatwarpspeed.com/post/2008/07/03/Newspaper-a-free-theme-for-BlogEngineNET.aspx" target="_blank"&gt;Newspaper&lt;/a&gt;&amp;#160;&lt;a href="http://www.jankoatwarpspeed.com/post/2008/07/07/An-update-for-BlogEngineNET-Newspaper-theme.aspx" target="_blank"&gt;v1.1&lt;/a&gt; by &lt;a href="http://www.jankoatwarpspeed.com" target="_blank"&gt;jankoatwrapspeed.com&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;BlackNewspaper theme is a simple White on Black theme with cleaner boundaries and gray sidebar text to give more emphasis to the contents in the post.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/BlackNewspaperfreeBlogEngine.NETtheme/3B38D049/sshot1.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sshot-1" border="0" alt="sshot-1" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/BlackNewspaperfreeBlogEngine.NETtheme/10BC795F/sshot1_thumb.png" width="491" height="480" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With minimal blog graphic, the post view is very clean with a lot of emphasis on blog text and the comments section&lt;a href="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/BlackNewspaperfreeBlogEngine.NETtheme/2F82C770/sshot2.png"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="sshot-2" border="0" alt="sshot-2" src="http://manojn.com/blog/image.axd?picture=WindowsLiveWriter/BlackNewspaperfreeBlogEngine.NETtheme/3BE0C4CC/sshot2_thumb.png" width="491" height="714" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.pokluda.com/post/Windows-Live-Writer-Source-Code-plug-in.aspx" target="_blank"&gt;Windows Live Writer Source Code Plugin&lt;/a&gt; is used for the Code blocks. This plugin uses SyntaxHighligter for BlogEngine.NET&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Also included with the theme is a modified version of the MonthsList control. I have modified the existing control to display a flat list of Months instead of a tree structure. Replace the MonthsList.cs file in the &lt;strong&gt;AppCode\Controls&lt;/strong&gt; directory of your blog installation.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.manojn.com/blog/default.aspx?theme=BlackNewspaper"&gt;Preview&lt;/a&gt; this theme on my website or &lt;a href="http://www.manojn.com/blog/file.axd?file=2009%2f6%2fBlackNewspaper.zip"&gt;Download&lt;/a&gt; it to use on your own.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/-vKbTps5_xU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/-vKbTps5_xU/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/06/09/BlackNewspaper-free-BlogEngineNET-theme.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=d0e021e1-d608-49c8-8082-cbb3d0f07c1c</guid>
      <pubDate>Tue, 09 Jun 2009 22:01:14 -1300</pubDate>
      <category>General</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=d0e021e1-d608-49c8-8082-cbb3d0f07c1c</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=d0e021e1-d608-49c8-8082-cbb3d0f07c1c</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/06/09/BlackNewspaper-free-BlogEngineNET-theme.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=d0e021e1-d608-49c8-8082-cbb3d0f07c1c</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=d0e021e1-d608-49c8-8082-cbb3d0f07c1c</feedburner:origLink></item>
    <item>
      <title>Install Windows 7 from USB Flash Drive</title>
      <description>&lt;p&gt;I recently bought an &lt;a href="http://en.wikipedia.org/wiki/Acer_Aspire_One" target="_blank"&gt;Acer One Netbook&lt;/a&gt; which comes with Windows XP preloaded. Since these Netbooks come without built in DVD drives, upgrading to another OS is a challenge. With the high storage capacity USB drives becoming cheaper by the day it is a perfect medium to installing Windows.&amp;#160; &lt;em&gt;Although this tutorial is for Windows 7, you can use these steps to install Windows Vista as well. &lt;/em&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;&lt;strong&gt;Pre-Requisites&lt;/strong&gt;&lt;/u&gt;&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;A Computer or Netbook that can boot from USB Drive. Check your BIOS for boot options, It should have an option to boot from USB disk or Removable drive. &lt;/li&gt;    &lt;li&gt;A computer with an OS and/or software that can mount an ISO file.      &lt;br /&gt;On Windows, I prefer using &lt;a href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt;Slysoft Virtual Clone Drive&lt;/a&gt; to mount ISO. It supports both x86 and x64 bit platforms and is free. &lt;/li&gt;    &lt;li&gt;USB Flash Drive with 3 GB or more space. &lt;/li&gt;    &lt;li&gt;Windows 7 ISO (or Windows Vista ISO)      &lt;br /&gt;Microsoft has published Windows 7 RC for everyone to download and test. &lt;a href="http://www.microsoft.com/windows/windows-7/download.aspx" target="_blank"&gt;This version can be used for 1 year&lt;/a&gt;. You can download Windows 7 from &lt;a href="http://technet.microsoft.com/en-au/evalcenter/dd353205.aspx?WT.mc_id=nl:TNF-v:A-a:A-ln:TNF_W7"&gt;Microsoft Technet Website&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;&lt;u&gt;&lt;strong&gt;Prepare your USB Flash Drive&lt;/strong&gt;&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;In order to boot from USB Flash Drive – you will need to mark the USB flash drive partition as Primary and format it in FAT 32 mode. &lt;font color="#ff0000"&gt;&lt;strong&gt;Please be careful as while performing these steps. An incorrect step can render your current installation useless.&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 1 – Open Command Prompt&lt;/u&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Open command prompt in Administrator mode. (Click on) Start Button –&amp;gt; (Click on) All Programs –&amp;gt; (Click on) Accessories –&amp;gt; (Right Click on) Command Prompt –&amp;gt; (Click on) Select Run as Administrator –&amp;gt; (Click) Continue. You should a command prompt start “Administrator: “ in the title like below. &lt;/p&gt; &lt;a href="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/72A7C850/image.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/7E5D0F82/image_thumb.png" width="600" height="316" /&gt;&lt;/a&gt;&amp;#160; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Step 2 – Setup USB Drive as Bootable&lt;/u&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;These following steps are very straight forward, but be careful with these steps, make sure you select the right drive. &lt;font color="#ff0000"&gt;&lt;strong&gt;Read these steps and look at the screenshot before you start entering these commands.&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt;  &lt;ol style="padding-left: 30px"&gt;   &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;diskpart&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;list disk&lt;/u&gt;&lt;/strong&gt; – this will list drives on your computer. Check the size column and note the Disk ### for your USB drive &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;select disk #&lt;/u&gt;&lt;/strong&gt;, here replace # with the number of your USB drive. &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;clean&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;create partition primary&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;select partition 1&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;format fs=fat32 quick&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Enter command &lt;strong&gt;&lt;u&gt;exit&lt;/u&gt;&lt;/strong&gt; &lt;/li&gt; &lt;/ol&gt; &lt;a href="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/4E52BE01/image.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/3980C581/image_thumb.png" width="600" height="539" /&gt;&lt;/a&gt;   &lt;h2&gt;&lt;u&gt;&lt;strong&gt;Copy Windows 7 Installation files&lt;/strong&gt;&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Mount the ISO that you have downloaded from Microsoft Website and copy all the files to the root of your USB Flash Drive &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/0831DB21/image.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/InstallWindows7fromUSBFlashDrive/6BD47333/image_thumb.png" width="600" height="309" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;&lt;strong&gt;Reboot your computer &amp;amp; set the option in BIOS to boot from USB or Removable Drive&lt;/strong&gt;&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Nice and Easy. Now wait and see how fast Windows 7 installs. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/E4x3sUwNtRA" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/E4x3sUwNtRA/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/05/07/Install-Windows-7-from-USB-Flash-Drive.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=ff093cb3-0950-4b15-95cd-3c18a4a2c918</guid>
      <pubDate>Thu, 07 May 2009 13:13:00 -1300</pubDate>
      <category>Windows 7</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=ff093cb3-0950-4b15-95cd-3c18a4a2c918</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=ff093cb3-0950-4b15-95cd-3c18a4a2c918</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/05/07/Install-Windows-7-from-USB-Flash-Drive.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=ff093cb3-0950-4b15-95cd-3c18a4a2c918</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=ff093cb3-0950-4b15-95cd-3c18a4a2c918</feedburner:origLink></item>
    <item>
      <title>The Big Bang Theory</title>
      <description>&lt;p&gt;&lt;a href="http://www.cbs.com/primetime/big_bang_theory/about/" target="_blank"&gt;The Big Bang Theory&lt;/a&gt; is a US comedy TV series that circles around the geekiness of two physicist Leonard and Sheldon.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;About the Show&lt;/strong&gt; &lt;/p&gt;    &lt;p&gt;Leonard and Sheldon are brilliant physicists, the kind of &amp;quot;beautiful minds&amp;quot; that understand how the universe works. But none of that genius helps them interact with people, especially women. All this begins to change when a free-spirited beauty named Penny moves in next door. Sheldon, Leonard's roommate, is quite content spending his nights playing Klingon Boggle with their socially dysfunctional friends, fellow CalTech scientists Wolowitz and Koothrappali. However, Leonard sees in Penny a whole new universe of possibilities... including love. &lt;/p&gt;    &lt;br /&gt;&lt;/blockquote&gt;  &lt;p&gt;This is a must see TV show for all the geeks out there. Here is a quick preview of the Pilot:&lt;/p&gt;  &lt;div style="padding-bottom: 10px; margin: 0px auto; padding-left: 0px; width: 425px; padding-right: 0px; display: block; float: none; padding-top: 15px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:42e1a8ee-80d7-4d45-897e-dcf9ca4226dc" class="wlWriterSmartContent"&gt;   &lt;div&gt;&lt;embed height="355" type="application/x-shockwave-flash" width="425" src="http://www.youtube.com/v/iHCtkFlcvUk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hl=en" /&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;And the cast is on twitter as well:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://twitter.com/leonardhofstadt" target="_blank"&gt;Leonard Hofstadter&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/sheldoncooper" target="_blank"&gt;Sheldon Cooper&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/pennyin4b" target="_blank"&gt;Penny&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/wolowizard" target="_blank"&gt;Howard Wolowitz&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/theraj" target="_blank"&gt;Rajesh Koothrappali&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://twitter.com/lesliewinkle" target="_blank"&gt;Leslie Winkle&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/Y2uv-LHvrK4" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/Y2uv-LHvrK4/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/03/15/The-Big-Bang-Theory.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=cffb968a-1369-48e3-8909-56515ba82890</guid>
      <pubDate>Sun, 15 Mar 2009 20:54:00 -1300</pubDate>
      <category>TV</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=cffb968a-1369-48e3-8909-56515ba82890</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=cffb968a-1369-48e3-8909-56515ba82890</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/03/15/The-Big-Bang-Theory.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=cffb968a-1369-48e3-8909-56515ba82890</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=cffb968a-1369-48e3-8909-56515ba82890</feedburner:origLink></item>
    <item>
      <title>How to selectively update your Facebook status with Twitter</title>
      <description>&lt;p&gt;It has been possible to update your Facebook Status from Twitter using the official twitter application on Facebook. But if you don’t want your friends to go crazy and comment on every tweet you publish, there is another Facebook application – Selective Twitter. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is what you do in 4 easy steps: &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Step 1: (Optional) If you have Twitter application already installed on your Facebook profile – remove or disable it &lt;/p&gt;  &lt;p align="left"&gt;&lt;a href="http://www.manojn.com/blog/image.axd?picture=remove.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 10px auto; display: block; float: none; border-top: 0px; border-right: 0px" title="remove" border="0" alt="remove" src="http://www.manojn.com/blog/image.axd?picture=remove_thumb.png" width="449" height="166" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="left"&gt;Step 2: Search and install &lt;a href="http://www.facebook.com/apps/application.php?id=115463795461&amp;amp;ref=s" target="_blank"&gt;Selective Twitter Application&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p align="left"&gt;&lt;img style="border-right-width: 0px; margin: 10px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.manojn.com/blog/image.axd?picture=image_thumb.png" width="566" height="105" /&gt;&lt;/p&gt;  &lt;p&gt;Step 3: Authorize this application and provide your twitter username &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Step 4: Go to Twitter and post a tweet. If you want to update your Facebook Status with a tweet – end it with #fb &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And YES – the application removes “#fb” before updating Facebook status. &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/ozyGzwlgJNc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/ozyGzwlgJNc/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2009/03/10/How-to-selectively-update-your-facebook-status-with-twitter.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=f701e3a7-1243-4c88-b6d7-c50c31966260</guid>
      <pubDate>Tue, 10 Mar 2009 12:12:00 -1300</pubDate>
      <category>Facebook</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=f701e3a7-1243-4c88-b6d7-c50c31966260</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=f701e3a7-1243-4c88-b6d7-c50c31966260</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2009/03/10/How-to-selectively-update-your-facebook-status-with-twitter.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=f701e3a7-1243-4c88-b6d7-c50c31966260</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=f701e3a7-1243-4c88-b6d7-c50c31966260</feedburner:origLink></item>
    <item>
      <title>Add domain user to local vista administrator group</title>
      <description>&lt;p&gt;Recently I had to re-format my work laptop and I decided to fix one of the most annoying thing that I dealt with everyday but I was too lazy to research. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;My company has a group policy setup for UAC. We need to have it enabled at all times but the pain of entering the username (domain\username) and password every time I wanted to start visual studio or IIS console was very unproductive and tedious. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Turns out a simple command at CMD prompt can do the trick: &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="csharpcode"&gt;&lt;strong&gt; net localgroup Administrators /add domain\username&lt;/strong&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;Behold – no more password – one click and we are elevated. Oh the joys of Windows Vista. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: This works for Windows 7 as well. &lt;em&gt;– 8th June 2009&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/3uUA_Fc9jr0" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/3uUA_Fc9jr0/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2008/06/20/Add-domain-user-to-local-vista-administrator-group.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=2a7859d9-c471-4f49-a91a-5f88a468f868</guid>
      <pubDate>Fri, 20 Jun 2008 01:48:00 -1300</pubDate>
      <category>Vista</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=2a7859d9-c471-4f49-a91a-5f88a468f868</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=2a7859d9-c471-4f49-a91a-5f88a468f868</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2008/06/20/Add-domain-user-to-local-vista-administrator-group.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=2a7859d9-c471-4f49-a91a-5f88a468f868</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=2a7859d9-c471-4f49-a91a-5f88a468f868</feedburner:origLink></item>
    <item>
      <title>Retrieving SharePoint Blog Post HTML</title>
      <description>&lt;p&gt;&lt;a href="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/RetrievingSharepointBlogPostHTML_14C2C/sharepoint_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 20px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="sharepoint" align="right" src="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/RetrievingSharepointBlogPostHTML_14C2C/sharepoint_thumb.jpg" width="244" height="184"&gt;&lt;/a&gt;Following my series of retrieving HTML from SharePoint - I had to recently retrieve the HTML from the Blog post in SharePoint. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One again - it is pretty straight forward but as the Blogs are a different site compared to SharePoint MySite - you will need to develop a feature at a Site Collection level. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;public bool Convert(string ItemId, string SiteUrl)
{
    //Get Site, Web, List and Retrieve ListItem
    using (SPSite Site = new SPSite(SiteUrl))
    {
        using (SPWeb Web = Site.OpenWeb())
        {
            SPList List = Web.Lists["Posts"];
            SPListItem ListItem = List.GetItemById((Int32.Parse(ItemId)));
            HTML = String.Format("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;{0}&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;", 
                   ListItem["Body"].ToString());
        }
    }
}&lt;/pre&gt;
&lt;p&gt;The list you are retrieving data from here is "Posts". &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/zUZtFB1hYjI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/zUZtFB1hYjI/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2008/06/01/Retrieving-SharePoint-Blog-Post-HTML.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=334c548d-27ba-4d0b-9450-6d91e43ce806</guid>
      <pubDate>Sun, 01 Jun 2008 23:22:00 -1300</pubDate>
      <category>Sharepoint</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=334c548d-27ba-4d0b-9450-6d91e43ce806</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=334c548d-27ba-4d0b-9450-6d91e43ce806</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2008/06/01/Retrieving-SharePoint-Blog-Post-HTML.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=334c548d-27ba-4d0b-9450-6d91e43ce806</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=334c548d-27ba-4d0b-9450-6d91e43ce806</feedburner:origLink></item>
    <item>
      <title>Retrieve SharePoint Wiki HTML</title>
      <description>&lt;p&gt;&lt;a href="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/RetrieveSharePointWikiHTML_1482C/sharepoint_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 20px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="sharepoint" align="right" src="http://www.manojn.com/blog/image.axd?picture=WindowsLiveWriter/RetrieveSharePointWikiHTML_1482C/sharepoint_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt; Recently, I had to retrieve the HTML of SharePoint Wiki pages. The only example I could find&amp;#160;&amp;#160; was Arpan shah's blog post about &lt;a href="http://blogs.msdn.com/arpans/archive/2007/07/24/sharepoint-web-service-example-grabbing-wiki-content.aspx" target="_blank"&gt;Grabbing Wiki content&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Turns out that it is not difficult as I thought and Wiki is just a List in SharePoint and you can retrieve the HTML content using the following code: &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;//ListId : List ID of Wiki List
//SiteUrl: Current Site URL
//ItemId: Item ID of wiki page
public string GetWikiHTML(string ListId, string ItemId, string SiteUrl)
{	
	//Get Site, Web, List and Retrieve ListItem
    	using (SPSite Site = new SPSite(SiteUrl))
    	{
        		using (SPWeb Web = Site.OpenWeb())
        		{
	            		SPList List = Web.Lists[new Guid(ListId)];
            			SPListItem ListItem = List.GetItemById((Int32.Parse(ItemId)));
            			string wikiHTML = String.Format(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;{0}&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;, 
		            	ListItem[ListItem.Fields.GetFieldByInternalName(&amp;quot;ows_WikiField&amp;quot;).Id].ToString());
        		}
	 }
}	&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;If you have read my previous &lt;a href="http://www.manojn.com/blog/post/EditControlBlock-(ECB)-menu-item-in-SharePoint-Wiki-and-Blogs.aspx"&gt;post&lt;/a&gt; you will notice that is it very easy to retrieve ListID, ItemID and SiteURL using SharePoint Custom Actions (&lt;a href="http://msdn.microsoft.com/en-us/library/ms473643.aspx"&gt;List of URL Tokens&lt;/a&gt; for Custom Action) or for the toolbar - on the page retrieval you can use following piece of code:&lt;/p&gt;

&lt;pre class="brush: csharp; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;SPContext SiteContext = null;
String ListId, ItemId, SiteUrl;

// Get current context
SiteContext = SPContext.GetContext(HttpContext.Current);
if (SiteContext != null)
{
	ListId = SiteContext.List.ID.ToString(); // Get Current Wiki List ID
    	ItemId = SiteContext.ListItem.ID.ToString(); // Get current Wiki page Id
    	SiteUrl = SiteContext.Web.Url.ToString(); // Get SiteUrl of Wiki Page
}&lt;/pre&gt;

&lt;p&gt;Hope this helps. If there is a better way of doing this - please leave me a comment.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/manojn/~4/FEV1FMh8jBY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/manojn/~3/FEV1FMh8jBY/post.aspx</link>
      <author>me.nospam@nospam.manojn.com (manoj)</author>
      <comments>http://www.manojn.com/blog/post/2008/06/01/Retrieve-SharePoint-Wiki-HTML.aspx#comment</comments>
      <guid isPermaLink="false">http://www.manojn.com/blog/post.aspx?id=0957dd44-a54c-410b-bb34-556025072647</guid>
      <pubDate>Sun, 01 Jun 2008 23:04:46 -1300</pubDate>
      <category>Sharepoint</category>
      <dc:publisher>manoj</dc:publisher>
      <pingback:server>http://www.manojn.com/blog/pingback.axd</pingback:server>
      <pingback:target>http://www.manojn.com/blog/post.aspx?id=0957dd44-a54c-410b-bb34-556025072647</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.manojn.com/blog/trackback.axd?id=0957dd44-a54c-410b-bb34-556025072647</trackback:ping>
      <wfw:comment>http://www.manojn.com/blog/post/2008/06/01/Retrieve-SharePoint-Wiki-HTML.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.manojn.com/blog/syndication.axd?post=0957dd44-a54c-410b-bb34-556025072647</wfw:commentRss>
    <feedburner:origLink>http://www.manojn.com/blog/post.aspx?id=0957dd44-a54c-410b-bb34-556025072647</feedburner:origLink></item>
  </channel>
</rss>
