Posts

Showing posts from November, 2012

C# Generic Lambda Comparer

publicclass LambdaComparer<T> : IComparer<T> { publicenum Direction { Asc = 1, Desc = -1 } privatereadonly Comparison<T> _comparison; public LambdaComparer(Comparison<T> comparison) { _comparison = comparison; } int IComparer<T>.Compare(T x, T y) { return _comparison(x, y); } publicstatic LambdaComparer<T> IgnoreSortComparer() { return IgnoreSortComparer(Direction.Asc); } publicstatic LambdaComparer<T> IgnoreSortComparer(Direction direction) { returnnew LambdaComparer<T>((x, y) => x.Equals(y) ? 0 : (int)direction); } }publicclass Data { publicint X; publicint Y; } [Test] publicvoid TestLambdaComparer() { var data = new Data[] { new Data() { X = 1, Y = 1 }, new Data() { X = 3, Y = 2 }, new Data() { X = 5, Y = 3 }, new Data() { X = 2, Y = 4 }, new Data() { X = 4, Y = 5 } }; Console.WriteLine("BEFORE: "+string.Join(",",data.Select(x=>string.Format("{0}={1}",x…

C# string parameter replacement with simple date arithmetic

[Test] publicvoid FindAndReplace() { var sql = @"SELECT * FROM Table_{@AsOf} WHERE Date='{@AsOf-1}'"; Console.WriteLine("BEFORE: {0}", sql); var asOf = DateTime.Today; //(?: )+ means repeat the inner groups var regexExpr = @"(?:{@(?<parameter>\w+)(?<operation>\S)?(?<number>\d+)?})+"; var regex = new Regex(regexExpr); foreach (Match match in regex.Matches(sql)) { sql = sql.Replace(match.Value, Substitute(match.Value, asOf)); } Console.WriteLine("AFTER : {0}", sql); } privatestring Substitute(string parameterText, DateTime asOf) { var regexExpr = @"{@(?<parameter>\w+)(?<operation>\S)?(?<number>\d+)?}"; var regex = new Regex(regexExpr); var match = regex.Match(parameterText); if (match.Success) { var parameter = match.Groups["parameter"].Value; if (match.Groups["operation"].Success && match.Groups["number"].Success)…

Script to create SqlServer Table, Stored Procedure and View

PRINT 'CREATE TABLE' GOIFEXISTS (SELECT * FROM dbo.sysobjects where id = object_id(N'[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) DROPTABLE [Table1] GOCREATETABLE [dbo].[Table1]( [Id] [uniqueidentifier] NOTNULL, [Name] [varchar](50) NULL, [DateUpdated] [datetime] NULL, CONSTRAINT [PK_Table1] PRIMARYKEYCLUSTERED ( [Id] ) ) GOGRANTSELECT, INSERT, UPDATE, DELETEON [