[英]Efficient way to extract double value from a List<string> in C#
[英]Efficient way to store a set of list of string in C#
我想知道哪種是在C#中存儲一組字符串列表的最有效方法。
我的目標是存儲有關“屬性”的信息,如Hold(object)
或Location(x,y,object)
。 為此,我有一個字典,將屬性名稱映射到“值集”。
例如,假設我為具有這些值的“location”屬性設置了“location”
location -> ["1","2","robot1"]
["2","3","robot2"]
["2","5","key1"]
我想執行查詢
DB["location"].Contains(["1","2","robot1"])
我不知道是否可能,但它是讓你知道我需要什么。 :)
我必須經常修改和訪問這些數據,所以我選擇了HashSet。 但我有兩個主要選擇:
HashSet<string[]>
。 問題是我認為HashSet找不到重復項,因為標准行為是通過引用比較數組。 出於同樣的原因,我不知道解決“檢查集合中是否包含[a,b,c]”問題的好方法。 HashSet<List<string>>
。 但我不需要List來存儲一組簡單的元組。 對我來說,這樣的簡單工作對我來說太過分了。 另一種方法是編寫我自己的類來存儲“參數”,但如果標准庫中存在某些內容,我不想這樣做。 :)
謝謝 :)
另一種方法是編寫我自己的類來存儲“參數”,但如果標准庫中存在某些內容,我不想這樣做。 :)
這實際上是我的偏好。 雖然編寫它有點工作,但擁有一個實際類型來保存值可以直接在類型中構建相等性,並使其使用非常明確。
在您的情況下,您可以存儲2個整數和一個字符串而不是3個字符串等。更重要的是, int
和string
值可以適當地命名,這反過來使您的代碼更易讀和理解。
使用HashSet和Tuple可能是一種選擇
HashSet<Tuple<int, int, string>> collections;
如果您更喜歡使用所有字符串:
HashSet<Tuple<string, string, string>> collections;
對於元組的相等性,您可能會發現此MSDN鏈接很有用。 無論您喜歡哪種形式,您都可以使用以下示例作為參考:
Tuple<string, double, int>[] scores =
{ Tuple.Create("Ed", 78.8, 8),
Tuple.Create("Abbey", 92.1, 9),
Tuple.Create("Ed", 71.2, 9),
Tuple.Create("Sam", 91.7, 8),
Tuple.Create("Ed", 71.2, 5),
Tuple.Create("Penelope", 82.9, 8),
Tuple.Create("Ed", 71.2, 9),
Tuple.Create("Judith", 84.3, 9) };
// Test each tuple object for equality with every other tuple.
for (int ctr = 0; ctr < scores.Length; ctr++)
{
var currentTuple = scores[ctr];
for (int ctr2 = ctr + 1; ctr2 < scores.Length; ctr2++)
Console.WriteLine("{0} = {1}: {2}", currentTuple, scores[ctr2],
currentTuple.Equals(scores[ctr2]));
Console.WriteLine();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.