多くのLINQを使用して、Tuple<string, int>
のリストの一部の値を設定して一致させる方法があります。Linq 2つのステートメントを1つの大きなステートメント(最適化)に結合する
今私はまだ2つのforeachループが互いに入れ子になっているので、それらを1つの巨大なLINQクエリに結合することは可能でしょう。私は大きな条件として最適化でこれを行うための最良の方法は何だろうと思っています。私はLINQを使用しながら、最後の2 foreachesを最適化したい可能であれば
private async void AddLocalChangesFromPendingOperations()
{
var pendingOperations = await this.operationsStorage.GetOperationsAsync();
var list = pendingOperations.
SelectMany(pendingOperation =>
pendingOperation.Settings, (pendingOperation, setting) =>
new { pendingOperation, setting })
.Where(a => a.setting.Key == "selection")
.Select(a => new Tuple<string, int>(
a.pendingOperation.DefinitionId,
Convert.ToInt32(a.setting.Value.ValueObject)))
.ToList();
foreach (var pendingChange in list)
{
var selection = await this.selectionsStorage.GetSelectionByIdAsync(pendingChange.Item2);
foreach (var selectionsViewModel in this.SelectionsList.Where(a => a.Name == selection.Name))
{
if (pendingChange.Item1 == "selection-add-animals")
{
selectionsViewModel.IsActive = true;
}
else if (pendingChange.Item1 == "selection-remove-animals")
{
selectionsViewModel.IsActive = false;
}
}
}
}
:
これは私が話している機能です。
this.SelectionsList = this
.SelectionsList
.Where(a => a.Name == selection.Name)
.SingleOrDefault(
a => pendingChange.Item1 == "selection-add-animals" ? a.IsActive = true : a.IsActive = false
);
GetSelectionByIdAsyncメソッドを変更してidsのリストを受け入れることができないので、最初のforeachを取り除くことはできませんか? –