我正在尝试从具有142000个对象的大型IEnumerable中检索名称列表。对于 某种原因..操作超时并留下不完整的名单。是 有一个更好,更快的方式来做我在下面的代码中做的事情:
IEnumerable<MyClass> table = GetAll(); // Get All returns an IEnumerable<MyClass>
IEnumerable<string> allNames = new List<string>();
allNames = table.Where(r => listOfIds.Contains(r.id)).Select(r => r.name);
任何帮助表示赞赏,
泰德
答案 0 :(得分:4)
这应该更有效:
List<String> allNames = (from id in listOfIds
join t in table on id equals t.id
select t.name).ToList();
Why is LINQ JOIN so much faster than linking with WHERE?
顺便说一下,Join
比上面的Where
快1262,有142000个对象和50000个ID。
79 millis vs. 99705 millis