Linq在一个语句中只调用一次函数

Jon*_*nny 6 .net c# linq

我对Linq很新.我有这样的事情:

dict = fullGatewayResponse.
Split(',').ToDictionary(key => key.Split('=')[0], value => value.Split('=')[1])
Run Code Online (Sandbox Code Playgroud)

这工作正常,但出于显而易见的原因,我不希望split()方法被调用两次.我怎样才能做到这一点 ?

感谢您的所有回复:),但我只能选择一个.

dtb*_*dtb 12

您可以将每个项目转换阵列之前ToDictionary使用Select:

dict = fullGatewayResponse.Split(',')
                          .Select(item => item.Split('='))
                          .ToDictionary(keySelector:     parts => parts[0],
                                        elementSelector: parts => parts[1]);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 8

dict = (from item in fullGatetayResponse.Split(',')
        let pair = item.Split('=')
        select pair).ToDictionary(x => x[0], x => x[1]);
Run Code Online (Sandbox Code Playgroud)

或者,如果你想隐藏数组的存在:

dict = (from item in fullGatetayResponse.Split(',')
        let pair = item.Split('=')
        select new{Key=pair[0],Value=pair[1]).ToDictionary(x=>x.Key,x=>x.Value);
Run Code Online (Sandbox Code Playgroud)