【发布时间】:2014-10-10 08:42:41
【问题描述】:
我有两个从函数中获得的集合:
IEnumerable<InventoryItem> inventoryItems = get();
IEnumerable<InventoryItem> relatedItems = get();
我想为每个库存项目分配相关项目。但是,相关项目不能与库存项目本身匹配。这意味着库存项目不能拥有自己的相关项目。
我试图以这种方式跳过集合中的重叠元素:
foreach (var item in inventoryItems)
{
InventoryItem item1 = item;
relatedItems.SkipWhile(x => x.RelatedItems.Contains(item1)).ForEach(i => item1.RelatedItems.Add(i));
Save(item);
}
这似乎不起作用。你们中的任何一个 Linq 用户有什么更好的建议吗?
我遇到的问题是SkipWhile(x => x.RelatedItems.Contains(item1)) 部分。另一部分在匹配项目时起作用,无论它们是否重叠
【问题讨论】:
-
可能只有我一个人,但不清楚对您的项目进行分组的规则是什么。如果您添加实际值/结果的示例,问题将获胜。
-
每个项目都有相关项目。这些相关项目不能包含它们被分配到的项目。
-
旁注:“A 与 B 相关”因此“B 不 与 A 相关”似乎是很奇怪的“关系”......也许有更好的名字.
-
这是一种单向关系。查看项目A会显示相关项目B,但查看项目B不会显示项目A
-
只是不遵循您希望将
relatedItems集合中的项目映射到inventoryItems中的项目的方式。不起作用的代码显然无助于理解所需的结果。