提问人:jokarl 提问时间:9/15/2022 更新时间:9/15/2022 访问量:41
比较 int 的列表,同时考虑两个 int 在重复时不相等
Comparing lists of ints in, while considering two ints not to be equal if repeated
问:
我知道这个问题已经多次重申,我认为在使用引用类型列表时这很简单。这也是大多数问题所谈论的。当使用值类型执行此操作时,我不太清楚。
我想做的是接受一个传入的请求,并确保该请求至少具有已经存在的相同数字。允许使用其他号码,并且请求中的其他号码将保留。因此,如果已经持久化并且请求包含 ,将被持久化。如果请求仅包含 或 ,则该请求将无效,并且将有效,并且仅返回已存在的数据。[1,2]
[1,2,3]
3
1
2
[1,2]
上面提到的最后一个案例,我通过以下方式实现:
Enumerable.SequenceEqual(existing.OrderBy(e => e), request.OrderBy(e => e));
但是,当列表不相等时,我想将列表中的每个 int 视为唯一的,但我无法弄清楚如何做到这一点。在以下示例中,我希望结果列表为 ,但最终结果是由于现有列表中的两个数字都因相等而被排除在外。[1, 4]
[4]
1
var existing = new List<int> { 1, 1, 2, 3, 4 };
var request = new List<int> { 1, 2, 3 };
existing.Except(request).ToList();
// 4
我已经看到它接受 IEqualityComparer
,但是在尝试为值类型实现它时我绊倒了,我不知道这是否是正确的方法。Except
在处理这个问题时,任何关于我应该如何思考的帮助将不胜感激。效率并不那么重要,因为列表根本不包含很多元素。
答:
2赞
Yitz
9/15/2022
#1
您可以使用常规:List<T>.Remove(T)
foreach(var e in existing)
{
var actuallyExisted = request.Remove(e);
}
actuallyExisted
如果找不到要删除的内容,则为 false。 现在将包含所有不存在的 s。e
request
int
评论
0赞
jokarl
9/15/2022
我有点生气,因为当这解决了我的问题时,我盲目地盯着效用函数
0赞
Yitz
9/15/2022
是的,不必关心效率,可以让你想到老式的简单做事方式......
0赞
jokarl
9/15/2022
由于简单性以及我的整体技能水平以及我的团队,我最终选择了类似的事情。谢谢!
评论
([1,2], [1,2,4]) -> [1,2,4]
error