Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表对象上具有条件的foreach循环';s属性_C#_Linq_Entity Framework_Foreach_Conditional Statements - Fatal编程技术网

C# 在列表对象上具有条件的foreach循环';s属性

C# 在列表对象上具有条件的foreach循环';s属性,c#,linq,entity-framework,foreach,conditional-statements,C#,Linq,Entity Framework,Foreach,Conditional Statements,我有一个foreach循环,只有当'Valid'属性设置为true时才需要迭代。不幸的是,如果列表中的第一项的“Valid”设置为false,它将退出整个循环 有人知道在foreach循环中使用条件的最佳方法吗?下面是我现在拥有的 foreach (var course in agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid)) 您可以使用Where方法 foreach (var course in agentNewTrain

我有一个foreach循环,只有当'Valid'属性设置为true时才需要迭代。不幸的是,如果列表中的第一项的“Valid”设置为false,它将退出整个循环

有人知道在foreach循环中使用条件的最佳方法吗?下面是我现在拥有的

foreach (var course in agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid))

您可以使用
Where
方法

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))

您的代码现在所做的是获取元素,直到找到一个与条件不匹配的元素。例如,如果列表的第一个元素与谓词不匹配,则会得到一个空集合。

您可以使用
Where
方法

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))

您的代码现在所做的是获取元素,直到找到一个与条件不匹配的元素。例如,如果列表中的第一个元素与谓词不匹配,则会得到一个空集合。

Eve上面的回答是正确的

我只想指出,如果您以更可读的方式编写代码,您可以通过单步执行代码来轻松解决这个问题

var collectionToIterate = agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid);
foreach (var course in collectionToIterate)
{
  //...
}

你会马上看到,收藏品并不是你所期望的。您没有“退出整个循环”,只是没有可迭代的项

Eve上面的回答是正确的

我只想指出,如果您以更可读的方式编写代码,您可以通过单步执行代码来轻松解决这个问题

var collectionToIterate = agentNewTraining.AllCoursesTaken.TakeWhile(c => c.Valid);
foreach (var course in collectionToIterate)
{
  //...
}

你会马上看到,收藏品并不是你所期望的。您没有“退出整个循环”,只是没有可迭代的项

您可以使用
Where

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))
或者使用
if
语句检查条件:

foreach (var course in agentNewTraining.AllCoursesTaken) {
  if (course.Valid) {
    ...
  }
}

您可以改用
Where

foreach (var course in agentNewTraining.AllCoursesTaken.Where(c => c.Valid))
或者使用
if
语句检查条件:

foreach (var course in agentNewTraining.AllCoursesTaken) {
  if (course.Valid) {
    ...
  }
}