这可能是一个简单的问题,但答案却让我难以捉摸。
我有一组要转换为字典的字符串。
集合中的每个字符串都是我从正则表达式匹配中获得的以逗号分隔的值列表。我希望字典中每个条目的键是逗号分隔列表中的第四个元素,并且相应的值是逗号分隔列表中的第二个元素。
当我尝试直接调用 ToDictionary 时,我最终陷入了某种循环,似乎让我退出了我所在的 BackgroundWorker 线程:
var MoveFromItems = matches.Cast<Match>()
.SelectMany(m => m.Groups["args"].Captures
.Cast<Capture>().Select(c => c.Value));
var dictionary1 = MoveFromItems.ToDictionary(s => s.Split(',')[3],
s => s.Split(',')[1]);
当我手动创建字典时,一切正常:
var MoveFroms = new Dictionary<string, string>();
foreach(string sItem in MoveFromItems)
{
string sKey = sItem.Split(',')[3];
string sVal = sItem.Split(',')[1];
if(!MoveFroms.ContainsKey(sKey))
MoveFroms[sKey.ToUpper()] = sVal;
}
感谢您提供的任何帮助。