检查列表中是否存在没有显式匹配的记录

问题描述 投票:0回答:2

我的意思是,例如我有这个带有 Id 和代码的语言对象列表:

{ Id = 1, Code = "N" },
{ Id = 2, Code = "E" },
{ Id = 3, Code = "D" }

但是我收到了这种格式的语言代码“NL”、“EN”、“DE”。

从列表中获取 Id 的最干净、最简单的方法是什么?

我试图在列表中进行扩展:

public static int GetLanguageId(
        this IEnumerable<Language> languages,
        string languageCode)
    {
        switch (languageCode)
        {
            ...
        }
    }

int languageId = languageList.GetLanguageId(languageCode);

但我不确定该怎么做。有什么想法吗?

c# list switch-statement mapping
2个回答
1
投票

您可以简单地比较第一个字符

return languages.SingleOrDefault(lang => lang.Code[0] == languageCode[0]).Id;

1
投票

在这种情况下你可以使用字典:

        var dico = new Dictionary<string, int>()
        {
            {"N", 1 }, {"E", 2} , {"D", 3}
        };
        var langageCode = "NL";
        var id = dico[langageCode[0]];
© www.soinside.com 2019 - 2024. All rights reserved.