C# Linq在一条语句中只调用函数一次

C# Linq在一条语句中只调用函数一次,c#,.net,linq,C#,.net,Linq,我对林克是个新手。我有这样的想法: dict = fullGatewayResponse. Split(',').ToDictionary(key => key.Split('=')[0], value => value.Split('=')[1]) 这很好,但出于明显的原因,我不希望split()方法被调用两次。 我该怎么做 感谢您的所有回复:),但我只能选择一个。您可以使用选择将每个项目转换为数组,然后再转换为字典: dict = fullGatewayResponse.Spl

我对林克是个新手。我有这样的想法:

dict = fullGatewayResponse.
Split(',').ToDictionary(key => key.Split('=')[0], value => value.Split('=')[1])
这很好,但出于明显的原因,我不希望split()方法被调用两次。 我该怎么做


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

您可以使用
选择
将每个项目转换为数组,然后再
转换为字典

dict = fullGatewayResponse.Split(',')
                          .Select(item => item.Split('='))
                          .ToDictionary(keySelector:     parts => parts[0],
                                        elementSelector: parts => parts[1]);
或者,如果要隐藏数组的存在性:

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);
试试这个:

dict = fullGatewayResponse.Split(',')
       .Select(y => y.Split('='))
       .ToDictionary(y => y[0], x => x[1]) 

这将起作用,但我认为保存拆分操作没有任何意义

var dict = fullGatewayResponse.Split(',')
                .Select(i=>i.Split('='))
                .ToDictionary(key=>key[0],value=>value[1]);

你能告诉我们字符串fullGatewayResponse的结构吗?我喜欢查询语法的几个地方之一,请删除。答案完全相同。嗯。。。为什么有人投了反对票?请在投票时提供理由。答案有问题吗?我投了反对票,并恢复了投票。我的第一句话仍然是这样。完全重复的答案。但现在不是完全重复的,因为他使用的是命名参数,您应该总是删除重复的答案。这不就是证明这个解决方案是正确的吗?它和你的几乎完全一样。这个答案被编辑以使它更清楚(不是IMO,但无论如何)。对不起,直到我输入这个时,很多人的答案都是一样的。
var dict = fullGatewayResponse.Split(',')
                .Select(i=>i.Split('='))
                .ToDictionary(key=>key[0],value=>value[1]);