C# Linq查询以从具有匹配子字符串值的数组中获取值

C# Linq查询以从具有匹配子字符串值的数组中获取值,c#,linq,C#,Linq,我有一个字符串--filterArg和一个字符串数组--arrayColDef,如下代码所示。我正在尝试将字符串

我有一个字符串--
filterArg
和一个字符串数组--
arrayColDef
,如下代码所示。我正在尝试将字符串
| ~
拆分,并尝试通过匹配
值从
filterArg获取值。
谁能告诉我如何获得代码中注释的值ToDo

static void Main(string[] args)
        {
            Hashtable ht = new Hashtable();
            string filterArg = "ZipCode=2130|~|ZipPlace=KNAPPER";
            string[] arrayColDef = { "ZipCode", "Space", "ZipPlace" };

            foreach (var item in arrayColDef)
            {
                var key = item;
                var value = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);//TODO: here value should hold = 2130 for first itteration
                ht.Add(item, value);
            }

        }

我认为迭代
arrayColDef
会变得很复杂,通过拆分的字符串进行迭代并提取值更容易。 你可以像下面这样做

static void Main(string[] args)
{
    Hashtable ht = new Hashtable();
    string filterArg = "ZipCode=2130|~|ZipPlace=KNAPPER";
    string[] arrayColDef = { "ZipCode", "Space", "ZipPlace" };

    var properties = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);
    foreach (var property in properties)
    {
        var nameValue = property.Split(arrayColDef, StringSplitOptions.RemoveEmptyEntries);
        var item = property.Split('=').First(); // get key
        var value = nameValue.First().TrimStart('='); // get value
        ht.Add(item, value);
    }
}
空间
已被忽略

过滤器拆分为

var value = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);//TODO: here value should hold = 2130 for first itteration
返回一个数组。您可以通过过滤并替换为linq来获得最终值:

string finalValue = value.Where(m => m.Contains(item)).Select(m => m.Replace(item+"=","")).FirstOrDefault();
然后,该值在finalValue变量中


问候语

filterArg.Split(…).FirstOrDefault(s=>s.StartsWith(key+“=”))
?你试过什么?你能用完整的句子,在你的问题中(而不是在评论中)正确地解释这句话应该做什么吗?谢谢你的工作。您的解决方案简单明了:)
string finalValue = value.Where(m => m.Contains(item)).Select(m => m.Replace(item+"=","")).FirstOrDefault();