我有两个来自不同类的集合,它们具有这两个共同属性:
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);
