22

linq foreach ループを使用して 2 つのフィールドを一度に更新できますか? サンプル スニペット: Name、Email、CreateTime、LastUpdateTime フィールドを持つユーザーデータがあります。すべてのユーザーの CreateTime と LastUpdateTime をリセットする必要があります。

更新するには、以下のように2つの呼び出しを使用しています

users.ForEach(x => x.CreateTime= DateTime.Now.AddMonths(-1));
users.ForEach(x => x.LastUpdateTime = DateTime.Now);

代わりに、linq foreach ループを使用して単一で実行できますか?

4

2 に答える 2

62

まず、これが であると仮定するとList<T>.ForEach、これはLINQ を使用していません。しかし、はい、ステートメント本体を使用してラムダ式を作成できます。

users.ForEach(x => {
    x.CreateTime = DateTime.Now.AddMonths(-1);
    x.LastUpdateTime = DateTime.Now;
});

ただし、すべての更新に 1 つの一貫した時間を使用することできます。

DateTime updateTime = DateTime.Now;
DateTime createTime = updateTime.AddMonths(-1);

users.ForEach(x => {
    x.CreateTime = createTime;
    x.LastUpdateTime = updateTime;
});

ただし、なぜこの方法でそれを達成したいのかは明確ではありません。foreach代わりにループを使用することをお勧めします。

DateTime updateTime = DateTime.Now;
DateTime createTime = updateTime.AddMonths(-1);

foreach (var user in users)
{
    user.CreateTime = createTime;
    user.LastUpdateTime = updateTime;
}
于 2012-06-11T09:16:43.887 に答える
9

実際にはlinqではありませんが、試すことができます

users.ForEach(x => { x.CreateTime = DateTime.Now.AddMonths(-1);
                     x.LastUpdateTime = DateTime.Now; });
于 2012-06-11T09:16:43.673 に答える