すべてのリスト / LINQ 愛好家に注意してください。小さな課題があります。
私は2つのリストを持っています:
List<ObjectInfo> firstListObject;
List<ObjectInfo> secondListObject;
最初のリストは、私がデータを管理するために使用するリストです。プロセスが進むにつれて項目を追加するために使用する 2 番目のリスト。そのため、時々、リストにアイテムを追加/削除します。
私はこれらのフィールドを持っています:
public int m_ObjectID { get;set; }
public bool m_IsSelected { get;set; }
そして、私の意図は、を「更新」するたびにsecondListObject
、すべてをスクロールして値をtruefirstListObject
に設定する必要があるということです。ELSE値は である必要があります。つまり、アイテムが最初にリストに表示され、その後削除された場合、アイテムは false になります。m_IsSelected
false
m_IsSelected
誰でも私を助けることができますか?ありがとう!
編集
これまでに行ったことは次のとおりです。
foreach (var singleOrDefault in secondListObject
.Select(objectInfo => firstListObject
.SingleOrDefault(_item => _item.m_ObjectID == inventoryInfo.m_ObjectID))
.Where(singleOrDefault => singleOrDefault != null))
{
singleOrDefault
.m_IsSelected = true;
}
まあ、ある意味、これはうまくいきます。探しているアイテムを真に設定します。デフォルトでは、すべてのm_IsSelected
値が false です。
しかし、アイテムを削除してm_IsSelected
も、真実のままであり、それが私がする必要があることです.
つまり、文では: でループを作成し、firstListObject
の各項目の (ID に基づく) 「オカレンス」があるかどうかを確認する必要がありますsecondListObject
。それが true の場合、を true に切り替えm_IsSelected
ます。それ以外の場合m_IsSelected
はfalseであることを確認する必要がありますが、これはどうすればよいかわかりません...