一見単純な問題: 文字列のリストがあります (プロパティ ファイルから読み取られます):
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) の最初の要素と一致する token の要素を取得したいと思います。DisplayValue が 0485 の要素が見つからない場合は、defaultvalues の 2 番目の要素が (0309) などと一致する必要があります。
defaultValues リストは動的にすることができるため、より多くの値を追加でき、常に最初のエントリが優先されます。
したがって、defaultValues リストは文字列の優先度リストのようなもので、インデックスが低いほど優先度が高くなります。上記の例では、結果は「0458」になります。
私はこのようなことができます:
string result = string.Empty;
foreach (var searchValue in defaultValues)
{
if (tokens.Any(token => token.DisplayValue == searchValue))
{
result = searchValue;
}
}
しかし、このようなことは、よりエレガントに foreach なしで行うことができると思います...