C#
イディオム4: ??演算子でField<T>()のNullを補完
出典: C# Linq で Null を回避する書き方とパフォーマンス(業務SEのコピペで動くやつ) — イディオム4: ??演算子でField<T>()のNullを補完
// ✅ Field<T> + ??でNull補完
var names = dt.AsEnumerable()
.Select(r => r.Field<string>("name")?? "(unknown)")
.ToList();
//値型の場合はField<int?>で受けて??で穴埋め
var ages = dt.AsEnumerable()
.Select(r => r.Field<int?>("age")?? 0)
.ToList();
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「イディオム4: ??演算子でField<T>()のNullを補完」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件// ✅ WhereでNull排除 var names = users .Where(u => u != null) .Select(u => u.Name)未収録
イディオム1: Where(x => x != null)でNullを弾く
#ee218e931976
// ✅ OfTypeでNull排除+型絞り込み object[] mixed = { "alice", null, 42, "bob", null, "carol" }; var strings = mixed.OfType<string>().ToList(); // → ["alice", "bob", "carol"]未収録
イディオム2: OfType<T>()でNull +型絞り込みを同時にやる
#14f9efe17681
// ✅ DefaultIfEmptyで空シーケンス時のフォールバック var prices = invoices .Where(i => i.Region == "東京") .Select(i => i.Amount)未収録
イディオム3: DefaultIfEmpty()で空シーケンス時のフォールバック
#c690c2cc9141
// ✅ ?.連鎖で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
