C#6.0の補完文字列機能で日付を年月日に変換する

C#で日付を年月日に変換
日付の文字列変換は業務アプリケーションの開発では常に付きまといます。C# 6.0 で追加された補完文字列機能は、今まで C# をやってきたベテランほど習得しておくべき書き方だと思います。

C#の正規表現でbrタグを削除する

正規表現を使ったReplace

C#の正規表現でbrタグを削除する
<br /> も <br> も置換します。

string s = "あいうえお<br />かきくけこ<br>";
Regex r = new Regex("<br.*?>");
// あいうえおかきくけこ
string output = r.Replace(s, "");


Hashtableで落ちる。項目は既に追加されています。辞書のキー 追加されるキー

例外
新規に使うことはないでしょうが、Hashtable は、既にあるキーを Add 使用とすると落ちます。

Hashtable ht = new Hashtable();
ht.Add("key", "hoge");
ht.Add("key", "hoge");

でも、書き方を変えると上書きします。
Hashtable ht = new Hashtable();
ht.Add("key", "hoge");
ht["key"] = "hoge2";

古いコードを触る場合は、覚えておくといいかもしれませんね。

SQL Server の GETDATE() で日付のみ取り出す

DateTime型の変換
GETDATE関数で取得した日付には時刻も含まれます。検索条件に使う場合などは時刻が邪魔をする場合があるので、以下の方法で日付だけを取り出します。
-- SQL Server 2008 以降はこれでいけます。
SELECT CONVERT(date,GETDATE())

-- 古いバージョンだとやや長くなります。
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

c#のKeyValuePairでnullチェック

nullチェック
FirstOrDefault() で条件に合う値が取得できなかったことをチェックする場合、KeyValuePair では少し書き方を変える必要があります。== null と書きたくなりますが、default で規定値かどうかのチェックを行います。

C# の規定値(default)によるチェック

注意点としては、Equals は内部的に型変換をしてしまうため、default の型を合わせておかないと、思った通りの結果にならないことがあります。

var kvp = new List<KeyValuePair<int, string>>() { new KeyValuePair<int, string>(1, "hoge"), };
var result = kvp.FirstOrDefault(x => x.Value == "ほげ");
if (result.Equals(default(KeyValuePair<int, string>)))
{
 Console.WriteLine("null");
}
// この書き方だと、チェックをすり抜けてしまうので注意。
if (result.Equals(default(KeyValuePair<string, string>)))
{ 
 Console.WriteLine("null");
}