1

我有两种不同类型的对象,它们的 ID 字段具有可能匹配的 ID。FindAll 操作返回正确的非匹配对象,而 Where 操作返回所有对象。有人可以帮我理解为什么吗?

var _kenticoIDs = new HashSet<string>(_kenticoSessions.Select(p => p.AttendeeInteractiveSessionID));
var list = _aiSessionIDList.FindAll(p => !_kenticoIDs.Contains(p.SessionID));
var ienum = _aiSessionIDList.Where(p => !_kenticoIDs.Contains(p.SessionID));

编辑:如果我对 resultA 变量执行 .ToList() ,则结果列表与结果变量相同。但是,当我在 .ToList() 之前检查两个变量(result/resultA)时,一个有 6 个值,一个有 63 个值。我觉得我错过了一些明显的东西。

4

2 回答 2

5

WhereFindAll是等价的,除了在执行方面,Where是延迟的,但是FindAll是立即的。

资料来源:这个SO 线程。

于 2012-07-23T19:43:20.313 回答
2

我认为您遇到的问题是了解 Linq。 Linq 扩展方法在哪里,而 FindAll 是 List 方法。Linq 表达式在被枚举或转换为列表/数组之前不会被评估。

于 2012-07-23T19:43:12.163 回答