C#
イディオム2: OfType<T>()でNull +型絞り込みを同時にやる
出典: C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ) — イディオム2: OfType<T>()でNull +型絞り込みを同時にやる
// ✅ OfTypeでNull排除+型絞り込み
object[] mixed = { "alice", null, 42, "bob", null, "carol" };
var strings = mixed.OfType<string>().ToList();
// → ["alice", "bob", "carol"]
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「イディオム2: OfType<T>()でNull +型絞り込みを同時にやる」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件// ✅ WhereでNull排除 var names = users .Where(u => u != null) .Select(u => u.Name)未収録
イディオム1: Where(x => x != null)でNullを弾く
#ee218e931976
// ✅ DefaultIfEmptyで空シーケンス時のフォールバック var prices = invoices .Where(i => i.Region == "東京") .Select(i => i.Amount)未収録
イディオム3: DefaultIfEmpty()で空シーケンス時のフォールバック
#c690c2cc9141
// ✅ Field<T> + ??でNull補完 var names = dt.AsEnumerable() .Select(r => r.Field<string>("name")?? "(unknown)") .ToList();未収録
イディオム4: ??演算子でField<T>()のNullを補完
#12c62cae638e
// ✅ ?.連鎖でNull中継 var firstItemName = order?.Items?.FirstOrDefault()?.Name ?? "(no item)"; // Linqとの組み合わせ未収録
イディオム5: ?.連鎖でnull中継を許容する
#8f2d66c1e375
// ✅ 10万件のホットパスでLinq → forに書き換え // Linq版(800ms前後) var sumLinq = items .Where(i => i != null && i.Price > 0)未収録
パフォーマンス: 10万件規模でLinq vs forループ
#0055f5f685f4
