考虑以下课程:
public class Score
{
private static readonly Guid _relationId = Guid.NewGuid();
public Guid Id { get; set; }
public Guid RelationId { get { return _relationId; } }
public Score()
{
Id = Guid.NewGuid();
}
}
Run Code Online (Sandbox Code Playgroud)
以下功能:
public IEnumerable<Score> GetScores()
{
yield return new Score();
yield return new Score();
yield return new Score();
}
Run Code Online (Sandbox Code Playgroud)
为什么以下函数返回1:
public int Execute()
{
var scores = GetScores();
IList<Score> externalScores = new List<Score>();
var filteredScores = scores.Where(score => externalScores.All(x => x.RelationId != score.RelationId));
foreach (var score in filteredScores)
{
externalScores.Add(score);
}
return externalScores.Count();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我添加.ToList()
到filteredScores
(在foreach循环或之后LINQ操作)函数的结果是3.
我怀疑它与关闭循环变量有关,但我似乎无法解决这个问题.
归档时间: |
|
查看次数: |
111 次 |
最近记录: |