我有两个来自不同类的集合,它们具有以下两个commpon属性:
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 ...
有人能帮助我吗?
编辑:
伙计我认为我还有更多解释要做...所以基本上如果Class1列表中的ItemID不存在于Class1列表中,那么它会被添加到Class1列表中,属性“Sales”设置为0 .... / p>
答案 0 :(得分:4)
你可以尝试
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);