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();