Skip to content

Instantly share code, notes, and snippets.

@codingbadger
codingbadger / MvcExtensions.cs
Last active September 21, 2017 09:52
EditorFor and DisplayFor when using custom templates and IEnumerables
public static class MvcExtensions
{
public static MvcHtmlString EditorForEnumerable<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, IEnumerable<TValue>>> expression, string templateName)
{
var fieldName = html.NameFor(expression).ToString();
var items = expression.Compile()(html.ViewData.Model);
return new MvcHtmlString(string.Concat(items.Select((item, i) => html.EditorFor(m => item, templateName, fieldName + '[' + i + ']'))));
}
public static MvcHtmlString DisplayForEnumerable<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, IEnumerable<TValue>>> expression, string templateName)
@codingbadger
codingbadger / PivotSql_selectonly.sql
Last active October 28, 2015 08:31
PivotSQL_SelectOnly
/* SETUP */
Declare @ProductInfo Table
(
ProductName varchar(10),
DateOfSale datetime,
SaleValue int
);
Declare @StartDate datetime, @EndDate DateTime
Set @StartDate = '2011-05-01'
@codingbadger
codingbadger / DynamicPivotSQL.sql
Created October 22, 2015 14:02
Dynamic Pivot SQL
Create Table dbo.ProductInfo
(
ProductName varchar(10),
DateOfSale datetime,
SaleValue int
);
Insert Into dbo.ProductInfo
@codingbadger
codingbadger / EncoedFtp.cs
Created October 1, 2015 15:03
EncodedFtp
string remoteFileName = "你好世界.txt";
string remoteHost = "ftp://someftpsite.com/somedirectory";
string fullFtpUrl = string.format("{0}//{1}", remoteHost, remoteFileName);
var encodedFtpUrl = Uri.EscapeUriString(Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(fullFtpUrl)));
var request = (FtpWebRequest)WebRequest.Create(encodedFtpUrl);
<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.2" Build="11.0.3128.0">
<BatchSequence>
<Batch>
<Statements>
<StmtSimple StatementText="Statement1" StatementId="1" StatementCompId="4" StatementType="SELECT" RetrievedFromCache="true" StatementSubTreeCost="7638.38" StatementEstRows="159878" StatementOptmLevel="FULL" QueryHash="0xAA0D58BE367C7AA2" QueryPlanHash="0x493DCD293A599B9A">
<StatementSetOptions QUOTED_IDENTIFIER="true" ARITHABORT="false" CONCAT_NULL_YIELDS_NULL="true" ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" NUMERIC_ROUNDABORT="false" />
<QueryPlan DegreeOfParallelism="4" MemoryGrant="12640256" CachedPlanSize="432" CompileTime="828" CompileCPU="828" CompileMemory="9160">
<ThreadStat Branches="3" UsedThreads="12">
<ThreadReservation NodeId="0" ReservedThreads="12" />
@codingbadger
codingbadger / CSV_To_Table
Created September 12, 2013 12:44
Convert Comma separated values (or any token actually it doesn't need to be a comma) to a table in SQL
Create Function dbo.fn_ConvertCSVtoTable ( @input nvarchar(max), @token nchar(1))
Returns @Result Table
(ColumnValue nvarchar(max))
As
Begin
Declare @x XML
Select @x = CAST('<CSV>'+ REPLACE(@input, @token,'</CSV><CSV>')+ '</CSV>' AS XML)
@codingbadger
codingbadger / Index Usage - Seeks
Created September 4, 2013 10:12
Index Usage stats for reads
SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME],
I.[NAME] AS [INDEX NAME],
USER_SEEKS,
USER_SCANS,
USER_LOOKUPS,
USER_UPDATES
FROM SYS.DM_DB_INDEX_USAGE_STATS AS S
INNER JOIN SYS.INDEXES AS I
ON I.[OBJECT_ID] = S.[OBJECT_ID]
AND I.INDEX_ID = S.INDEX_ID
@codingbadger
codingbadger / Index Usage
Created September 4, 2013 10:12
Index Usage for Insert / Update / Delete stats
SELECT OBJECT_NAME(A.[OBJECT_ID]) AS [OBJECT NAME],
I.[NAME] AS [INDEX NAME],
A.LEAF_INSERT_COUNT,
A.LEAF_UPDATE_COUNT,
A.LEAF_DELETE_COUNT
FROM SYS.DM_DB_INDEX_OPERATIONAL_STATS (NULL,NULL,NULL,NULL ) A
INNER JOIN SYS.INDEXES AS I
ON I.[OBJECT_ID] = A.[OBJECT_ID]
AND I.INDEX_ID = A.INDEX_ID
WHERE OBJECTPROPERTY(A.[OBJECT_ID],'IsUserTable') = 1
@codingbadger
codingbadger / Index Fragmentation
Created September 4, 2013 10:10
Lists all Indexes and their fragmentation
SELECT ps.database_id, ps.OBJECT_ID,
ps.index_id, b.name,
ps.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL, NULL, NULL) AS ps
INNER JOIN sys.indexes AS b ON ps.OBJECT_ID = b.OBJECT_ID
AND ps.index_id = b.index_id
WHERE ps.database_id = DB_ID()
ORDER BY ps.avg_fragmentation_in_percent desc