使用以下对象层次结构,我需要确认每个字符串中是否存在所有字符串值Id
,例如Inventories
SearchResult
给定一个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);
}