C# 查找列表中的冲突
我对逻辑和映射两个不同的表有这个问题。将向用户显示一个表,供他们从中选择项目。然后,我们需要将他们的选择映射到一个更大的系统识别项列表。某些系统项是用户项的组合 用户项目= 关键项目 1 | A 2 | B 3 | C 4 | D 5 | E 6 | F 系统项目= 系统代码|用户项映射 EG1 | 1 EG2 | 2 EG3 | 1,2 EG4 | 1,3 EG5 | 2,3 EG6 | 4 EG7 | 5 EG8 | 5,6 EG9 | 3 EG10 | 4,5,6 因此,如果用户输入A、B、C、D、E、F[=1、2、3、4、5、6键]作为他们的输入。系统应该能够确定冲突的映射。 所选项目A、B和C存在冲突,请从以下项目中选择: EG3 1,2+EG9 3或 EG4 1,3+EG2或 EG5 2,3+EG1 1 所选项目D、E和F存在冲突,请从以下项目中选择: EG8 5,6+EG6 4或 EG10 4,5,6 这一切都是在C中完成的,使用列表和表内容的自定义类,例如List和List 编辑: 所以我所做的是: 1获取包含任何用户项的所有系统代码。 2具有多个用户项的所有系统代码都会进入一个列表。所有组合码都会转到另一个。 3循环浏览组合列表,如果用户项与多个系统代码冲突,则将其添加到冲突列表中 现在我有一个类似这样的冲突列表: [守则]C# 查找列表中的冲突,c#,C#,我对逻辑和映射两个不同的表有这个问题。将向用户显示一个表,供他们从中选择项目。然后,我们需要将他们的选择映射到一个更大的系统识别项列表。某些系统项是用户项的组合 用户项目= 关键项目 1 | A 2 | B 3 | C 4 | D 5 | E 6 | F 系统项目= 系统代码|用户项映射 EG1 | 1 EG2 | 2 EG3 | 1,2 EG4 | 1,3 EG5 | 2,3 EG6 | 4 EG7 | 5 EG8 | 5,6 EG9 | 3 EG10 | 4,5,6 因此,如果用户输入A、B
public class ConflictSets
{
public List<SystemCodes> SystemCodesList {set; get;}
public List<int> UserCodesList {set; get;}
}
public class SystemCodes
{
public string Code {set; get;}
public string UserItems {set; get;}
}
[/code]
问题是我的列表ConflictSetList中只有成对的冲突。因此,对于上述示例:
ConflictSetsList[0]。SystemCodesList[0]=EG3
ConflictSetsList[0]。SystemCodesList[1]=EG4
ConflictSetsList[1]。SystemCodesList[0]=EG3
ConflictSetsList[1]。SystemCodesList[1]=EG5
ConflictSetsList[2]。SystemCodesList[0]=EG4
ConflictSetsList[2]。SystemCodesList[1]=EG5
我真正想要的是一个具有以下内容的类:
ConflictSetsList[0]。选项[0]。SystemCodesList[0]=EG3
ConflictSetsList[0]。选项[0]。SystemCodesList[1]=EG9
ConflictSetsList[0]。选项[1]。SystemCodesList[0]=EG4
ConflictSetsList[0]。选项[1]。SystemCodesList[1]=EG2
ConflictSetsList[0]。选项[2]。SystemCodesList[0]=EG5
ConflictSetsList[0]。选项[2]。SystemCodesList[1]=EG1
这更有意义吗?对不起,我不太擅长解释这个
这是来自以下输入的数据:
dtSystemCodes=新数据表。其中行[UserInputKeys]=xx | yy
dtUserItems=新数据表。其中,行[键]=xx
List inKeys=新列表{1,2,3,4,5,6}
谢谢。最简单的解决方案是制作一个2d布尔数组,所有映射的长度为[1+2^示例数,示例数]
valid EG1 EG2 EG3 ... EG10
0 0 0 0 0
1 0 0 0 1
...
1 1 1 1 1
0=假,1=真
在for循环中测试每一行的有效性,并将结果放入第一列
然后在第一列中列出了所有可能的映射表问题出在哪里?你尝试了什么?问题是我不知道如何逻辑地做列表。我尝试的是:获取所有systemitems,循环查找所有与用户输入键关联的代码。然后浏览该列表并将所有组合添加到单独的类中。我想要另一个名为ConflictSets的类,该类将列出所有受影响的冲突及其关联的系统代码。通过编辑您的问题显示您的尝试。