一个看似简单的问题:我有一个字符串列表(从属性文件中读取):
IList<string> defaultValues = new List<string> {"0458","0309"};
和一些对象的另一个列表,每个对象都有一个字符串类型的属性:
IList<Token> tokens = new List<Token>
{
new Token {DisplayValue = "0123"},
new Token {DisplayValue = "0309"},
new Token {DisplayValue = "0203"},
new Token {DisplayValue = "0458"},
new Token {DisplayValue = "0911"}
};
public class Token
{
public string DisplayValue { get; set; }
}
现在我想获取 DisplayValue 与 defaultValues (0485) 的第一个元素匹配的标记元素。如果未找到具有 DisplayValue 0485 的元素,则默认值中的第二个元素应匹配 (0309),依此类推。
defaultValues 列表可以是动态的,因此可以添加更多值,并且总是第一个条目应该具有优先级。
所以 defaultValues 列表是字符串的优先级列表,索引越低优先级越高。在上面的示例中,结果应该是“0458”。
我可以做这样的事情:
string result = string.Empty;
foreach (var searchValue in defaultValues)
{
if (tokens.Any(token => token.DisplayValue == searchValue))
{
result = searchValue;
}
}
但我认为这样的事情可以更优雅地完成并且没有 foreach ......