【发布时间】:2018-01-24 13:27:28
【问题描述】:
我有一本像下面这样的字典,
PropStreetSuffixDict.Add("ROAD", "RD");
PropStreetSuffixDict.Add("STREET","ST"); and many more.
现在我的要求是,当字符串包含ROAD 或STREET 的子字符串时,我想返回该子字符串的相关值。
例如..CHURCH ACROSS ROAD 应该返回RD
这是我尝试过的,仅当输入字符串与字典的键完全相同时才有效。
private string GetSuffix(string input)
{
string suffix=string.Empty;
suffix = PropStreetSuffixDict.Where(x => x.Key.ToUpper().Trim() ==
input.ToUpper().Trim()).FirstOrDefault().Value;
return suffix;
}
注意:
如果一个字符串包含多个这样的子字符串,那么它应该返回任何子字符串第一次出现的值。
即如果STREET CHURCH ACROSS ROAD是输入,它应该返回ST而不是RD
【问题讨论】:
-
不完全是你要问的,但你不需要
.Where(x).FirstOrDefault(),你可以只拥有.FirstOrDefault(x)。但无论哪种情况,您都需要考虑这可能会返回 null,然后您尝试访问Value属性将导致抛出异常
标签: c# linq dictionary