我创建了一个元组列表:
static List<Tuple<string, string>> Alt;
用户添加到此列表:
Alt.Add(new Tuple<string, string>(tbAlt.Text, ""));
根据第一个字符串(即 tbAlt.Text )查找元组并删除它或修改第二个字符串的最佳方法是什么?
我是使用元组和列表的新手 :)
非常感谢您的帮助!
看来第一个字符串必须是唯一的,否则您将找不到(单数)
你为什么用List<Tuple<string, string>>
?
为什么不Dictionary<string,string>
呢?
Dictionary<TKey, TValue>.ContainsKey
非常非常快。
您的元组列表看起来很像字典。考虑改用它 - Dictionary<string,string>
。它已经有按键检索值、删除值等方法
如果同一个键可能有多个值,则可以使用 Lookup 类。
您可以使用List<T>.FindIndex
来查找匹配的索引,然后根据需要进行替换。
int index = Alt.FindIndex(t => t.Item1 == tbAlt.Text);
if (index != -1)
{
// Modify
Alt[index] = Tuple.Create(tbAlt.Text, "NewText");
// Remove:
Alt.RemoveAt(index);
}
根据第一个字符串 ( Item1
) 的值查找元组:
var t = Alt.FirstOrDefault(i => i.Item1 == "SomeString");
if(t != null)
{
// delete
Alt.Remove(t);
}
来自评论:
您不能修改第二项 ( Item2
) 的值,因为元组是不可变的,所以您必须删除它并重新添加它。
如果您确定列表中包含您的项目:
Alt.Remove(Alt.First(i => i.Item1 == tbAlt.Text));
但是,为了修改元组,您必须创建一个新元组。
if (Alt.Any(i => i.Item1 == tbAlt.Text))
{
Alt.Remove(Alt.First(i => i.Item1 == tbAlt.Text));
Alt.Add(new Tuple<string, string>(tbAlt.Text, "Something New"));
}