【发布时间】:2023-03-14 12:37:01
【问题描述】:
我有一个包含密钥的dictionary,例如
"Car"
"Card Payment"
我有一个字符串description,例如“向 tesco 支付卡”,我想在字典中找到与该字符串对应的项目。
我试过这个:
var category = dictionary.SingleOrDefault(p => description.ToLowerInvariant().Contains(p.Key)).Value;
目前,这会导致字典中同时返回“汽车”和“信用卡付款”,并且我的代码像 SingleOrDefault 一样被炸毁。
我怎样才能实现我想要的?我考虑过在空格中为键添加前缀和后缀,但我必须对描述做同样的事情——我认为这会起作用,但它有点脏。有没有更好的方法?只要性能不会受到太大影响,我不反对将 Dictionary 更改为其他类型。
上面例子的必填结果:只得到“卡支付”
【问题讨论】:
-
您期望的结果是什么?只得到
"Card Payment"? -
@D-Shih 是的
-
你为什么不用
FirstOrDefault()而不是SingleOrDefault()? -
@Rick 好的,我知道你可以试试我的答案 :)
标签: c# linq dictionary