Id
次のオブジェクト階層では、すべての文字列値がInventories
各SearchResult
例に存在するかどうかを確認する必要があります。
確認が与えられると、string[] list = { "123", "234", "345" }
すべての値が要素list
の配列に少なくとも1回存在します。Inventory
1つの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);
}