In meiner Form Ich habe vier RadioButton
s, basierend auf Benutzerauswahl wird dieser Code ausgeführt:Der beste Weg, redundanten Code mit wiederholter Logik zu behandeln?
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
if (radioButtonName.Checked)
{
var Qr = from n in mylist where n.Name == textBoxSearch.Text select new { n.Name, n.Age, n.Occu, n.Gender };
foreach (var item in Qr)
{
listBox1.Items.Add("Name: " + item.Name + " " + " Age: " + item.Age + " " + " Occupation: " + item.Occu + " " + " Gender: " + item.Gender);
}
}
if (radioButtonAge.Checked)
{
var Qr = from n in mylist where n.Age == textBoxSearch.Text select new { n.Name, n.Age, n.Occu, n.Gender };
foreach (var item in Qr)
{
listBox1.Items.Add("Name: " + item.Name + " " + " Age: " + item.Age + " " + " Occupation: " + item.Occu + " " + " Gender: " + item.Gender);
}
}
if (radioButtonGender.Checked)
{
var Qr = from n in mylist where n.Gender == textBoxSearch.Text select new { n.Name, n.Age, n.Occu, n.Gender };
foreach (var item in Qr)
{
listBox1.Items.Add("Name: " + item.Name + " " + " Age: " + item.Age + " " + " Occupation: " + item.Occu + " " + " Gender: " + item.Gender);
}
}
if (radioButtonOccupation.Checked)
{
var Qr = from n in mylist where n.Occu == textBoxSearch.Text select new { n.Name, n.Age, n.Occu, n.Gender };
foreach (var item in Qr)
{
listBox1.Items.Add("Name: " + item.Name + " " + " Age: " + item.Age + " " + " Occupation: " + item.Occu + " " + " Gender: " + item.Gender);
}
}
}
Der Code sehr redundant und wiederholt scheint, aber auch ich kann nicht einen Weg, um all 4 Radiobuttons zu handhaben finden in einer einzigen Zeile, in der nur eine Variable mit der Benutzerauswahl verknüpft ist. myList
a List
einer Klasse I geschaffen, das 4 string
Eigenschaften (Name
, Age
, Gender
, Occu
)
Kurze Frage sollten die Radiobutton Prüfung und Textvergleich in Klammern eingeschlossen werden oder macht es aus, nicht wahr? zB '(radioButtonName.Checked && item.Name == textBoxSearch.Text) || (radioButtonAge.Checked && item.Age == textBoxSearch.Text) ... ' – Nkosi
@Nkosi: Es spielt keine Rolle im Zusammenhang; Wenn jedoch die Version mit Parentheis * für Sie * lesbarer ist, können Sie '(...)' –
@Nkosi hinzufügen, siehe [diese Antwort] (http://stackoverflow.com/a/1196738/5555803). '&&' s erhalten zuerst bewertet –