我有一个类似结构的列表(字母就是数据):
|A|B|C|D|E|F|G|
我还有另一个类似的列表:
|A|B|E|G|
我想创建一个与第一个列表长度相同的第三个列表,但在第二个列表中不存在的列中放置“NULL”,例如:
|A|B|NULL|NULL|E|NULL|G|
我怎样才能做到这一点?
答案 0 :(得分:1)
你可以使用Linq:
var result =
firstList.Select(p => secondList.Contains(p) ? p : null).ToList();
如果列表很大,那么这是O(N ^ 2)的事实可能很重要。如果您可以将secondList表示为HashSet,则可以提高性能,因为HashSet的集合成员资格查找是O(1)。
答案 1 :(得分:1)
您可以采取以下措施:
var list1 = new List<string>() {"A", "B", "C", "D", "E", "F", "G"};
var list2 = new List<string>() { "A", "B", "E","G" };
var list3 = new List<string>();
int j = 0;
for(int i=0; i < list1.Count; i++)
{
var item = list1[i];
if (item == list2[j])
{
list3.Add(item);
j++;
}
else
{
list3.Add(null);
}
}
答案 2 :(得分:0)
迭代你的第一个列表,每个元素将它与你的第二个列表中的相应元素进行比较,如果匹配输出,否则输出null,继续直到你到达第一个列表的末尾。