1

私はLINQが初めてで、それを手に入れようとしています。

.ForEach()これまでのところ、すべてのオブジェクトに対して関数を実行するために使用する場合など、必要なコードを削減するなど、さまざまなことに役立ちました。

IsMouseOver()関数が true を返したときに、マスター リストからすべてのオブジェクトのリストを取得しようとしています。

標準としては、foreach次のようになります。

this.m_EntHovered.Clear();
foreach (EntEditor ent in this.m_EntAll)
{
    if (ent.IsMouseOver(mousePos))
        this.m_EntHovered.Add(ent);
}

しかし、LINQを使用してこれを短縮したかったのですが、取得できる最短はそれほど短くはありませんでした:

this.m_EntHovered = (from ent in this.m_EntAll
                    where ent.IsMouseOver(input)
                    select ent).ToList<EntEditor>();

私が求めていることを達成するためのより良い方法はありますか、それとも私がうまくやっていることですか?

4

1 に答える 1