【发布时间】:2012-06-27 15:21:43
【问题描述】:
使用以下对象层次结构,我需要确认每个SearchResult 的Inventories 中是否存在所有字符串Id 值,例如
给定string[] list = { "123", "234", "345" },确认所有list 值在Inventory 元素数组中至少出现一次。我很好奇是否可以使用一个 LINQ 语句来清理它。
SearchResult
--
Inventory[] Inventories
Inventory
--
String Id
现在,我正在拆分 list,例如
list.Split(').ToDictionary(i => i.ToString(), i => false)
并迭代字典,测试每个库存。然后,我创建一个新的List<SearchResult> 并在字典中没有剩余值的情况下添加项目。这感觉很笨重。
代码
// instock: IEnumerable<SearchResult>
foreach (var result in instock)
{
Dictionary<string, bool> ids = list.Split(',').ToDictionary(i => i.ToString(), i => false);
foreach (var id in ids)
if (result.Inventory.Any(i => i.Id == id.Key))
ids[id.Key] = true;
if (!ids.Any(i => i.Value == false))
// instockFiltered: List<SearchResult>
instockFiltered.Add(result);
}
【问题讨论】: