如何对超过1000个if语句执行检查?

Pri*_*ice 0 .net c# if-statement

我有一份报纸和杂志清单。精确到1374,我的所有文件都命名为abcd_20190406.xml,其中abcd文件名abbreviaton和20190406是yyyyMMdd格式的日期。

所以我想要的是,如果我按WindowsForm中的按钮,它将abcd在列表中搜索。如果找到,它将填充其各自的数据,这些数据将在我的表单中提及TextBoxes

if (Path.GetFileNameWithoutExtension(cboSource.Text).StartsWith("aamfr"))
{
        TextBoxPublication.Text = "Anti-âge Magazine";
        TextBoxAbbreviation.Text = "aamfr";
        TextBoxLanguage.Text="fr";
}

if (Path.GetFileNameWithoutExtension(cboSource.Text).StartsWith("wic"))
{
        TextBoxPublication.Text = "Wisden Cricket Monthly";
        TextBoxAbbreviation.Text = "wic";
        TextBoxLanguage.Text="en";
}
Run Code Online (Sandbox Code Playgroud)

等等。这是我目前的做法。如果有条件,给予1374。那么,有没有更快或更更好的方法呢?

我曾想过创建一个List<string>并执行此操作,但我不知道如何进行。我什至不知道那是否是正确的方法。

请帮忙。

iak*_*ski 6

创建一个类来保存每个出版物的信息,例如:

class PublicationInfo
{
    public string Title{ get; set; }
    public string Abbreviation{ get; set; }
    public string Language{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后使用字典保存所有出版物

var Publications = new Dictionary<string,PublicationInfo>();
Run Code Online (Sandbox Code Playgroud)

并使用缩写作为关键字,用您的数据填充它。然后,您将能够像这样填充文本框:

var abbreviation = Path.GetFileNameWithoutExtension(cboSource.Text).Split("_")[0];
if (Publications.ContainsKey(abbreviation)
{
    TextBoxPublication.Text = Publications[abbreviation].Title;
    TextBoxAbbreviation.Text = abbreviation;
    TextBoxLanguage.Text = Publications[abbreviation].Language;
}
Run Code Online (Sandbox Code Playgroud)