gpt4 book ai didi

c# - 使用 LINQ 将缺失项添加到集合

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:46 24 4
gpt4 key购买 nike

我有两个来自不同类的集合,它们具有这两个共同属性:

public class Class1
{
public string ItemID {get;set;}
public int sales {get;set;}
}

public class Class2
{
public string ItemID {get;set;}
}

现在这里发生了什么我有两个集合,这些类型的类是这样的:

List<Class1> list1; // has items that actually have sales...

List<Class1> list2; // has all items that have or don't have sales

list1 缺少根本没有销售额的商品。我想在这里做的是以某种方式通过 itemID 比较这两个列表,如果 itemID 丢失,那么我将把丢失的项目添加到 list1 手动将属性 sales 设置为 0。

当找到丢失的元素时,我想这样做:

list1.Add(new Class1
{
Sales = 0,
ItemID = ItemID,
});

或者以其他方式添加缺失的项目并将其属性 sales 设置为 0...

有人可以帮帮我吗?

编辑:

伙计们,我想我还有更多的解释要做...所以基本上,如果 Class2 列表中的 ItemID 不存在于 Class1 列表中,那么它会被添加到 Class1 列表中,属性“Sales”设置为 0....

最佳答案

你可以试试

var missingItems = 
list2.Where(class2 => list1.Any(class1 => class1.ItemId == class2.ItemId) == false)
.Select(class2 => new Class1
{
ItemId = class2.ItemId,
Sales = 0
});

list1.AddRange(missingItems);

为了更好地表现Where您可以创建 HashSet<string> 的条款的 list1 .

var existedIds = new HashSet<string>(list1.Select(class1 => class1.ItemId));
var missingItems =
list2.Where(class2 => existedIds.Contains(class2.ItemId) == false)
.Select(class2 => new Class1
{
ItemId = class2.ItemId,
Sales = 0
});

list1.AddRange(missingItems);

关于c# - 使用 LINQ 将缺失项添加到集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com