通过大量对象进行筛选

时间:2012-05-30 20:25:42

标签: c#

我正在尝试从具有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);

任何帮助表示赞赏,

泰德

1 个答案:

答案 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