我不确定是否可能。
我想用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; <--------
}
答案 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;
}