【发布时间】:2017-08-07 11:40:01
【问题描述】:
我有文本框,我获取并将其输入设置为如下结构。
public struct mappingData
{
public string a;
public string b;
public int c;
}
mappingData mappingFileData;
public List<mappingData> mappingDatabase = new List<mappingData>();`
单击按钮后,我将其存储到列表中
private void btnAddMapData_Click(object sender, EventArgs e)
{
mappingFileData.a = addressPrefixMbDataType[cbMbDataType.SelectedIndex];
mappingFileData.b = addressPrefixMbValue[cbMbValue.SelectedIndex];
mappingFileData.c = Int32.Parse(tbAddress.Text);
// Add new entry to the linked list each time when 'btnAddMapData' is clicked
mappingDatabase.Add(mappingFileData);
}
现在可以关注我的数据库了
a , x , 1
a , x , 2
b , x , 1
b , x , 2
但不应该是这样的
a , x , 1
a , x , 1> > 重复因为“1”之前已经可用
b , x , 2
b , x , 2 > 重复因为“2”之前已经可用
b , x , 1> > 不是重复的,因为第一个参数不同,即 'b' 所以“a”和“b”都可以保持 1,因为两者不同,但如果有列表中有两个“a”,那么应该只有一个“1”。
请给我一个建议
【问题讨论】:
-
两个项目被视为相等(重复)的确切规则是什么? IE。你能否提供一个方法
public bool Equals(mappingData a, mappingData b)的实现,如果a和b是重复的,则返回true,否则false? -
我建议您将结构更改为类。然后你可以实现 IEquatable> 接口。之后你应该可以使用 mappingDatabase.Contains()