2

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

任何帮助表示赞赏,

泰德

4

1 回答 1

4

这应该更有效:

List<String> allNames = (from id in listOfIds
                         join t in table on id equals t.id
                         select t.name).ToList();

为什么 LINQ JOIN 比使用 WHERE 链接快得多?

顺便说一句,这里有 142000 个对象和 50000 个 ID,Join比你上面的要快 1262 。Where

79毫与99705

于 2012-05-30T20:30:57.870 回答