有没有办法可以做一个包含LINQ表达式代码的foreach?

时间:2013-12-13 13:22:50

标签: c# linq

我有以下代码:

foreach (Question question in upd)
{
    if (question.AssignedTo == null)
    {
        question.QuestionStatusId = 6;
    }
    else
    {
        question.AssignedDate = DateTime.UtcNow;
        question.QuestionStatusId = 5;
    }
    _uow.Questions.Update(question);
}

其中upd是List

它有效,但我想知道是否有一种更简单的方法来编码。在我使用以下内容之前:

upd.ForEach(_obj => _uow.Questions.Update(_obj));

但是现在我不能这样做,因为我有一些必须在每次更新之前运行的代码。

1 个答案:

答案 0 :(得分:3)

您可以将任何代码块放在采用Action的Linq扩展中。假设ForEach定义为:

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
    foreach(T item in enumeration)
    {
        action(item);
    }
}

然后

upd.ForEach(_obj => 
 {
    if (question.AssignedTo == null)
    {
        question.QuestionStatusId = 6;
    }
    else
    {
        question.AssignedDate = DateTime.UtcNow;
        question.QuestionStatusId = 5;
    }
    _uow.Questions.Update(_obj);
  }
);