Skip to content

Instantly share code, notes, and snippets.

View jnm2's full-sized avatar

Joseph Musser jnm2

View GitHub Profile
create or alter proc dbo.RestoreDatabase(@databaseName sysname, @backupFilePath nvarchar(max), @replace bit, @progressPercentIncrement tinyint = 10)
as
set nocount on;
-- Get backup database name
declare @backups table (BackupName nvarchar(128), BackupDescription nvarchar(255), BackupType smallint, ExpirationDate datetime, Compressed binary(1), Position smallint, DeviceType tinyint, UserName nvarchar(128), ServerName nvarchar(128), DatabaseName nvarchar(128), DatabaseVersion int, DatabaseCreationDate datetime, BackupSize numeric(20,0), FirstLSN numeric(25,0), LastLSN numeric(25,0), CheckpointLSN numeric(25,0), DatabaseBackupLSN numeric(25,0), BackupStartDate datetime, BackupFinishDate datetime, SortOrder smallint, CodePage smallint, UnicodeLocaleId int, UnicodeComparisonStyle int, CompatibilityLevel tinyint, SoftwareVendorId int, SoftwareVersionMajor int, SoftwareVersionMinor int, SoftwareVersionBuild int, MachineName nvarchar(128), Flags int, BindingID uniqueidentifier, RecoveryForkID uniqueidentifier, Col
using System.Buffers;
using System.Buffers.Binary;
using System.Collections.Immutable;
using System.IO;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Text;
using System.Threading.Channels;
using System.Reflection;
internal static class ReflectionUtils
{
public static bool IsVisibleOutsideAssembly(Type type)
{
return (type.Attributes & TypeAttributes.VisibilityMask) switch
{
TypeAttributes.Public => true,
TypeAttributes.NestedFamily or TypeAttributes.NestedFamORAssem => IsVisibleOutsideAssembly(type.DeclaringType!),
declare @databaseNameFilter sysname = ''
select
last_execution_time as LastExecutionTime,
last_elapsed_time * 0.000001 as ElapsedSeconds,
last_rows as LastRowCount,
total_rows as TotalRowCount,
execution_count as ExecutionCount,
objects.name as ObjectName,
SqlText.text as CommandText
@jnm2
jnm2 / ObservableObject.cs
Last active February 19, 2025 16:36
ObservableObject
using System.ComponentModel;
using System.Runtime.CompilerServices;
public abstract class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading;
// Uses https://gist.github.com/jnm2/73d378c5b52547728de1148d72de522a
/// <summary>
/// Leaves the first line alone, but removes common indentation from the remaining lines.
/// </summary>
public static string RemoveIndentation(string syntax)
{
var commonWhitespaceLength = GetCommonWhitespace(syntax).Length;
return string.Create(
public ref struct LineEnumerator(ReadOnlySpan<char> text)
{
private ReadOnlySpan<char> text = text == default ? "" : text;
public bool MoveNext()
{
if (text == default)
return false;
var nextEnd = text.IndexOf('\n');

Field use cases

Initial community discussion thread: dotnet/csharplang#140

First-access ("lazy") initialization

public List<int> Prop => field ??= new();

Nullability analysis with the field keyword

Properties that use the field keyword will not have warnings such as

For properties that have a get accessor with a body and which use field, analyze using this pseudocode, providing the same warnings as we would with accessors as local functions.

void Prop()
{
   T? field = default;