私の問題を説明するために、いくつかの基本的な簡素化された例を使用します。
私はクラスを持っています:
class Item
{
int ID;
bool Selected;
}
Item
ここで、クラスのリストが 2 つあるとします。
List<Item> ListA = GetListA();
List<Item> ListB = GetListB();
次に、 のすべてのアイテムを含む 3 番目のリストを作成しますListB
。重要なことは、一致 (同じID
) が見つかった場合はその値ListA
を使用したいということです。Selected
Selected
ListB
次のように 3 番目のリストを作成しています。
List<Item> ListC = from item in ListB
select new Item
{
ID = item.ID,
Selected = item.Selected// <-- should use value form ListA if available
};
重要: 無知だと思われたくないのですが、作成方法を変更したくありませんListC
。つまり、「linq select」メソッドを使用し、値を割り当てる「ワンライナー」を使用したいということSelected
です...うまく機能するリストを作成する方法が他にもあることは知っていますが、私は何も新しいことを学びません。
私はこれまでにいくつかのことを試しました...
ListA
これが機能することはわかっていますが、 2回クエリしたくありません。
Selected = ListA.Any(x => x.ID == item.ID) ? ListA.First(x => x.ID == item.ID).Selected : item.Selected
私も使ってみDeafultIfEmpty
ましたが、この状況では正しいとは思いません...うまくいかなかったので、ListA
空だった方が使いやすいようです(気にしません)