我有两个清单:
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
list1 = {"a", "b", "b", "c", "b"};
list2 = {"b", "d", "c"};
我想通过以下方式获得差异:
list3 = list1 - list2 = {"a", "b", "b"};
list4 = list2 - list1 = {"d"};
我不能在这里使用“除外”,因为
list1.Except(list2).ToList();
删除list1中字符串“b”的所有意义。我需要在第二个列表中每个出现一个字符串,只删除第一个列表中该字符串的一个次出现。
感谢您的帮助。
答案 0 :(得分:3)
试试这个
class QualMeta(type):
def __new__(mcs, name, bases, class_dict):
class_dict['__qualname__'] = name
new_cls = type.__new__(mcs, name, bases, class_dict)
return new_cls
class Qualnamed(object):
__metaclass__ = QualMeta
print(Qualnamed.__qualname__) # print "Qualnamed"
答案 1 :(得分:0)
void Main()
{
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
list1.Add("a");
list1.Add("b");
list1.Add("b");
list1.Add("c");
list1.Add("b");
list2.Add("b");
list2.Add("d");
list2.Add("c");
var resultList= temp(list2,list1);
}
List<string> temp(List<string> x,List<string> y)
{
foreach(var value in y)
{
x.Remove((x.Where(z=>z == value).SelectMany(g=>g.Take(1).DefaultIfEmpty(g.First())).FirstOrDefault()).ToString());
}
return x;
}