C# 有没有一种方法可以使foreach包含LINQ表达式中的代码?

C# 有没有一种方法可以使foreach包含LINQ表达式中的代码?,c#,linq,C#,Linq,我有以下代码: foreach (Question question in upd) { if (question.AssignedTo == null) { question.QuestionStatusId = 6; } else { question.AssignedDate = DateTime.UtcNow; question.QuestionStatusId = 5; } _uow

我有以下代码:

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是一个列表

它可以工作,但我想知道是否有一个更简单的方法让我来编写这个。在我使用以下工具之前:

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

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

您可以将任何代码块放入执行操作的Linq扩展中。假设ForEach定义为:

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

您可以将任何代码块放入执行操作的Linq扩展中。假设ForEach定义为:

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

您可以将任何代码块放入执行操作的Linq扩展中。假设ForEach定义为:

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

您可以将任何代码块放入执行操作的Linq扩展中。假设ForEach定义为:

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


你可能会编写一个函数来完成它,然后使用它<代码>upd.ForEach(_obj=>函数handleUpdates(_obj))您可以检查此答案:希望这有帮助;]您可能需要将这些硬编码的数字转换为枚举!
foreach
循环有什么问题?lambda表达式可以是没有
return
关键字的单行语句,也可以是包装在
{}
中并需要显式
return
的多行语句。如果必须在更新调用之前输入检查或其他代码,请使用后一种方法。您可能会编写一个函数为您执行此操作,然后使用该函数<代码>upd.ForEach(_obj=>函数handleUpdates(_obj))您可以检查此答案:希望这有帮助;]您可能需要将这些硬编码的数字转换为枚举!
foreach
循环有什么问题?lambda表达式可以是没有
return
关键字的单行语句,也可以是包装在
{}
中并需要显式
return
的多行语句。如果必须在更新调用之前输入检查或其他代码,请使用后一种方法。您可能会编写一个函数为您执行此操作,然后使用该函数<代码>upd.ForEach(_obj=>函数handleUpdates(_obj))您可以检查此答案:希望这有帮助;]您可能需要将这些硬编码的数字转换为枚举!
foreach
循环有什么问题?lambda表达式可以是没有
return
关键字的单行语句,也可以是包装在
{}
中并需要显式
return
的多行语句。如果必须在更新调用之前输入检查或其他代码,请使用后一种方法。您可能会编写一个函数为您执行此操作,然后使用该函数<代码>upd.ForEach(_obj=>函数handleUpdates(_obj))您可以检查此答案:希望这有帮助;]您可能需要将这些硬编码的数字转换为枚举!
foreach
循环有什么问题?lambda表达式可以是没有
return
关键字的单行语句,也可以是包装在
{}
中并需要显式
return
的多行语句。如果您必须在更新调用之前放入检查或其他代码,请使用后者。+1,但在其当前状态下,此答案仅使用一个操作并混淆每个调用的值(不是说
ForEach
不好!),如果您定义了
void UpdateMethod(问题),可能会更清楚
完成了代码,并将其包装在
ForEach
调用中。@Moo Juice哪个部分混淆了ForEach?该方法被称为
ForEach
…Moo Juice同意,虽然这没有多大意义,但这是所要求的,我只是想澄清一下,你可以在LinQ表达式中放入一块代码,我不认为这有什么用处或可读性更好。@Gusdor,在其当前形式中-答案仅将
foreach
调用委托给扩展方法
foreach
,并且清晰度不一定提高。通过引入函数本身-我们将在这种方法中获得更高的可读性。+1,但在其当前状态下,此答案仅使用一个操作并混淆了for-each调用(不是说
ForEach
不好!),如果您定义了
void-UpdateMethod(问题),可能会更清楚
完成了代码,并将其包装在
ForEach
调用中。@Moo Juice哪个部分混淆了ForEach?该方法被称为
ForEach
…Moo Juice同意,虽然这没有多大意义,但这是所要求的,我只是想澄清一下,你可以在LinQ表达式中放入一块代码,我不认为这有什么用处或可读性更好。@Gusdor,在其当前形式中-答案仅将
foreach
调用委托给扩展方法
foreach
,并且清晰度不一定提高。通过引入函数本身-我们将在这种方法中获得更高的可读性。+1,但在其当前状态下,此答案仅使用一个操作并混淆了for-each调用(不是说
ForEach
不好!),如果您定义了
void-UpdateMethod(问题),可能会更清楚
完成了代码,并将其包装在
ForEach
调用中。@Moo Juice哪个部分混淆了ForEach?该方法被称为
ForEach
…Moo Juice同意,虽然这没有多大意义,但这是所要求的,我只是想澄清一下,你可以在LinQ表达式中放入一块代码,我不认为这有什么用处或可读性更好。@Gusdor,在其当前形式中-答案仅将
foreach
调用委托给扩展方法
foreach
,并且清晰度不一定提高。通过引入函数本身-我们将在这种方法中获得更高的可读性。+1,但在其当前状态下,此答案仅使用一个操作并混淆了for-each调用(并不是说
ForEach
不好!),如果您定义了一个执行代码和包装的
void UpdateMethod(Question-Question)
,可能会更清楚