元組的列表中刪除元組我創建的元組的列表:找到並從C#4.0
static List<Tuple<string, string>> Alt;
用戶添加到這個列表:
Alt.Add(new Tuple<string, string>(tbAlt.Text, ""));
什麼是找到最好的辦法一個基於第一個字符串(即tbAlt.Text)的Tuple並刪除它或修改第二個字符串?
我是新來使用元組和列表:)
非常感謝您的任何幫助!
元組的列表中刪除元組我創建的元組的列表:找到並從C#4.0
static List<Tuple<string, string>> Alt;
用戶添加到這個列表:
Alt.Add(new Tuple<string, string>(tbAlt.Text, ""));
什麼是找到最好的辦法一個基於第一個字符串(即tbAlt.Text)的Tuple並刪除它或修改第二個字符串?
我是新來使用元組和列表:)
非常感謝您的任何幫助!
它出現的第一個字符串必須是唯一的,你不會找到一個(單數)
你爲什麼要使用List<Tuple<string, string>>
?
爲什麼不是Dictionary<string,string>
?
Dictionary<TKey, TValue>.ContainsKey
非常快。
您可以使用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
)的價值,因爲元組是不可變的,所以你必須刪除它並重新添加。
元組是不可變的 - 你可以不設置'Item2':http://msdn.microsoft.com/en-us/library/dd386892.aspx這就是爲什麼我用'FindIndex'代替LINQ (所以你可以替換列表中的整個元組) –
Ops,謝謝@ReedCopsey,如果你需要維護元組的順序是合理的,否則刪除舊的和添加新的元組也應該這樣做。 – Zbigniew
如果確定這個名單上有你的項目:
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"));
}
您的元組列表看起來很像字典。考慮使用它 - Dictionary<string,string>
。它已經有了通過密鑰來取回價值,刪除它,e.t.c的方法。
如果同一個鍵可能有多個值,則可以使用Lookup類。
但是,如果列表的順序很重要。字典不能保證順序。 – RayOldProf
@RayOldProf如果您有任何問題,請將其作爲問題發佈 – Paparazzi