ラムダを求めているので、ここにlinqアプローチがあります。
var allTxt = new[] { txtEmergencyName1, txtEmergencyName2, txtEmergencyName3, txtEmergencyName4 };
var allText = allTxt.Select((txt, i) => new { Text = txt.Text.Trim(), Pos = i + 1 }).ToList();
bool hasNoDuplicate = !allText.Any(t => allText.Skip(t.Pos).Any(t2 => t.Text == t2.Text));
関連するすべてのTextBoxを配列などのコレクションに入れて、を使用しますEnumerable.Any
。現在のテキストボックスの前にあるすべてをスキップすることで、TextBoxを2回チェックすることを回避できます。
関連するすべてTextBoxes
がのようなコンテナコントロールにある場合は、それらを見つけるためにPanel
使用することもできます。Enumerable.OfType
IEnumerable<TextBox> allTxt = this.EmergencyPanel.Controls.OfType<TextBox>();
補足:とにかく、いくつかのコントロールを検証するための最もパフォーマンスの高い方法を探すのは時期尚早の最適化です。これはあなたが常に行っていることではなく、何百万ものコントロールが存在することはありません。代わりに、最短または最も読みやすいアプローチを探す必要があります。