C# 使用字典创建交叉表结构
我想创建一个数据存储类来保存一些商品及其数量。例如,购物车上有一些物品及其数量 这个C# 使用字典创建交叉表结构,c#,C#,我想创建一个数据存储类来保存一些商品及其数量。例如,购物车上有一些物品及其数量 这个存储类的行为应该类似于数据库交叉表 ID | Amount ----------- 1 | 432 2 | 52345234 3 | 243545 4 | 1123 5 | 235345645 6 | 3434 7 | 33342 8 | 5543 9 | 665675 10 | 3445 我考虑过使用一本保存ID和金额的字典 class Store { public Store()
存储
类的行为应该类似于数据库交叉表
ID | Amount
-----------
1 | 432
2 | 52345234
3 | 243545
4 | 1123
5 | 235345645
6 | 3434
7 | 33342
8 | 5543
9 | 665675
10 | 3445
我考虑过使用一本保存ID和金额的字典
class Store
{
public Store()
{
goods = new Dictionary<int, int>();
for (int i = 0; i < 10; i++) // There might be 10 goods in the database
{
goods.Add(i, 0); // initialize with an amount of 0
}
}
Dictionary<int, int> goods; // <ID, Amount>
public void ChangeGoodAmount(int goodId, int goodAmountModifier) // add or remove goods
{
goods.Where(valuePair => valuePair.Key == goodId).First().Value += goodAmountModifier;
}
}
类存储
{
公共商店()
{
货物=新字典();
for(int i=0;i<10;i++)//数据库中可能有10个商品
{
goods.Add(i,0);//初始化为0
}
}
字典商品;//
public void ChangeGoodAmount(int-goodId,int-goodAmountModifier)//添加或删除商品
{
其中(valuePair=>valuePair.Key==goodId.First().Value+=goodAmountModifier;
}
}
我无法修改金额,因为值是只读的。是否可能有一种变通方法,或者可能有一种完全不同的方法?替换
goods.Where(valuePair => valuePair.Key == goodId).First().Value += goodAmountModifier;
与
您不必在此处使用LINQ来查找要更改的条目。我添加了一个检查,以确保当goodId不可用时不会出现异常
使用goods[goodId]
可以访问值。替换
goods.Where(valuePair => valuePair.Key == goodId).First().Value += goodAmountModifier;
与
您不必在此处使用LINQ来查找要更改的条目。我添加了一个检查,以确保当goodId不可用时不会出现异常
使用goods[goodId]
您可以访问该值。为什么不直接访问您的字典
public void ChangeGoodAmount(int goodId, int goodAmountModifier) // add or remove goods
{
if(goods.ContainsKey(goodId))
goods[goodId] += goodAmountModifier;
}
为什么你不直接访问你的字典
public void ChangeGoodAmount(int goodId, int goodAmountModifier) // add or remove goods
{
if(goods.ContainsKey(goodId))
goods[goodId] += goodAmountModifier;
}
使用字典上的进行写访问并获取任何现有值。如果访问以读取现有值,但该值尚不存在,则将抛出KeyNotFoundException
。如果在字典中找不到goodId
,下面的代码将在字典中使用goodAmountModifier
中的值创建一个新条目,否则它将通过添加goodAmountModifier
来修改该值
public void ChangeGoodAmount(int goodId, int goodAmountModifier) // add or remove goods
{
int existingValue = 0;
goods.TryGetValue(goodId, out existingValue); // attempts to retrieve the existing value
goods[goodId] = existingValue + goodAmountModifier; // assign a value
}
使用字典上的进行写访问并获取任何现有值。如果访问以读取现有值,但该值尚不存在,则将抛出KeyNotFoundException
。如果在字典中找不到goodId
,下面的代码将在字典中使用goodAmountModifier
中的值创建一个新条目,否则它将通过添加goodAmountModifier
来修改该值
public void ChangeGoodAmount(int goodId, int goodAmountModifier) // add or remove goods
{
int existingValue = 0;
goods.TryGetValue(goodId, out existingValue); // attempts to retrieve the existing value
goods[goodId] = existingValue + goodAmountModifier; // assign a value
}
如果字典不包含该键,则将引发异常,而现在您的答案与我在您之前几分钟所做的相同:D如果字典不包含该键,则将引发异常,而现在您的答案与我在您之前几分钟所做的相同:D