【发布时间】:2013-01-22 23:36:48
【问题描述】:
我有一个简单的课程:
public class RawBomItem
{
private string material;
private string item;
private string component;
private string quantity;
private string b;
private string spt;
...
}
每个数据成员都有一个属性。
然后我有一个包含此类实例的列表
private List<RawBomItem> rawBom;
列表包含超过 70000 项。
此时我想在这个列表上运行一个有点复杂的 LINQ 查询。
List<string> endProducts = new List<string>(
rawBom.Where(x1 => new List<string>(rawBom.Select(x2 => x2.Component)
.Distinct())
.Contains(x1.Material) && (x1.B != "F"))
.Select(x3 => x3.Material));
查询似乎陷入了无限循环。 (我等了几分钟才关机)
我会把它变成数据库来工作,我只是对可能是什么问题感兴趣。
【问题讨论】:
-
为什么要一行行?
-
好吧,尝试将列表长度减少到几百个,看看它是否仍然有效......
-
目前还不清楚这个查询的作用,但考虑到它过滤了 70K 项。对于每一项,它最多处理 70K 项,每项最多两次。所以我们正在研究大约 5 到 10 次 十亿 次迭代。那应该需要一些时间。换句话说:O(N²) 不好。
标签: c# linq linq-to-objects