我有下表(我想把它作为datatable
,但我很灵活):
ID(int) Branch(string) Department(string) Available(Boolean)
101 North Sales True
101 North Marketing False
102 North Security True
103 South Sales True
... ... ... ...
我希望能够通过Available
[ID][Branch][Department]
像[101]["North"]["Marketing"]
这样的内容会给我False
,或者至少告诉我表中是否存在包含[101]["North"]["Marketing"]
的行。
最有效的方法是什么?
如果您认为它比datatable
答案 0 :(得分:1)
您可以使用DataTable的Select方法。 像
datatable.Select("ID = 101 AND Branch='North' AND Department = 'Marketing'");
答案 1 :(得分:1)
您可以将DataTable的PrimaryKey设置为前3列,然后使用DataTable的Rows.Find(101,“North”,“Marketing”)来删除行,如果不存在则获取null!
答案 2 :(得分:1)
我应该补充一点,它不会出现在某个数据库中。它只是作为一个小的查找表在内存中。可能不会超过20行。
在这种情况下,对于性能和内存占用而言,最高效的方法是使用Branch和Department的枚举并使用三嵌套数组方法。
有人说过,它和简单的数据表都是维护的噩梦。我建议你考虑明确定义的类型。
答案 3 :(得分:1)
如果内存中存在少量数据,为什么不将LINQ用于对象并为数据创建自定义业务对象?它比DataTable
更有效。
public class Branch
{
public int ID {get;set;}
public string BranchName {get;set;}
public string Department {get;set;}
public bool Available {get;set;}
}
public bool BranchExists(int id, string branch, string dept)
{
//assume "Branches" is your in-memory list
return Branches.Any(b => b.id == id && b.BranchName == branch && b.Department == dept);
}