字典搜索由几个关键列不是全部

时间:2014-12-11 22:11:09

标签: c# dictionary key

我不确定是否可能。

我想用Multi列键构建一个字典(让我们说4)。然后搜索几列(2或3)。

代码:

class keyset
{
     public keyset()
     {}

     public long sId;
     public long aId;
     public string Name;
     public string title;

}


Dictionary<keyset, string> myDictionary = new Dictionary<keyset, string>();

然后我想只搜索键集中的几列:

case 1:    sid = 100  and  aid=200
case 2:    sid = 50  and name="John"
.......

我该怎么做?


好的,我明白这是不可能的。 我应该使用linq。

然后我想知道哪个结构会更快:

计划A:使用字典

class keyset
{
     public keyset()
     {}

     public long sId;
     public long aId;
     public string Name;
     public string title;

}

Dictionary<keyset, string> myDictionary = new Dictionary<keyset, string>();

计划B:没有字典

class data
{
     public data()
     {}

     public long sId;
     public long aId;
     public string Name;
     public string title;


     public string  Value;      <-------- 

}

2 个答案:

答案 0 :(得分:0)

Dictionary<TKey,TValue>不是数据库,所以,不,你不能这样做。

另一方面,DataSet 意味着是数据库之类的内存表示。如果您使用DataSet代替Dictionary<TKey,TValue>,那么您将能够使用Find方法查找所需的数据。

答案 1 :(得分:0)

如果您有比较keysets的通用逻辑,则可以在班级中实施IEquatable<T>。但是如果你想根据不同的属性比较它们每次这不是一个选项。在这种情况下你可以尝试使用LINQ

var itemExists = myDictionary.Any(x => x.Key.sid == 50 && x.Key.name == "John");

if(itemExists)
{
   var value = myDictionary.First(x => x.Key.sid == 50 && x.Key.name == "John").Value;
}