如果我有这样的字符串:
"Name=Irwin&Home=Caribbean&Preference=Coffee"
C#中有一个方法可以将其转换为类似于Request.QueryString的键值对吗?
Bra*_*don 36
你可以尝试使用HttpUtility.ParseQueryString.
var nvc = HttpUtility.ParseQueryString(yourString);
xan*_*tos 18
现在,对于最长的LINQ表达......
var dict = "Name=Irwin&Home=Caribbean&Preference=Coffee"
    .Split('&')
    .Select(p => p.Split('='))
    .ToDictionary(p => p[0], p => p.Length > 1 ? Uri.UnescapeDataString(p[1]) : null);
但请注意,如果有多个具有相同名称的键,它将抛出.
如果你想保护自己免受这个添加:
    .GroupBy(p => p[0]).Select(p => p.First())
就在.ToDictionary(之后.Select)之前
这将采取key=value多个中的第一个.更改.First()到.Last()拿最后一个.
您还可以使用ToDictionary()方法:
var input = "Name=Irwin&Home=Caribbean&Preference=Coffee";
var items = input.Split(new[] { '&' });
var dict = items.Select(item => item.Split(new[] {'='})).ToDictionary(pair => pair[0], pair => pair[1]);