Linq / Linqtoexcel 问题选择

Linq / Linqtoexcel issue selecting

我有一个奇怪的问题,我完全不明白。也许我错过了什么。

var excel = new ExcelQueryFactory("products.xlsx");
//get all products with discount
var discounts = from s in excel.Worksheet() where
    s["Discount/Premium"].Cast<string>().StartsWith("-") select s;
//Select products with a YTM higher than 3
var applicable = from b in discounts where 
    b["YTM"].Cast<double>() > 3.0 select b;
MessageBox.Show(discounts.Count().ToString()); //<- returns 51
MessageBox.Show(applicable.Count().ToString()); //<- returns 14826

据我所知,我正在搜索打折的 YTM 产品。我怎样才能从 51 获得 14'000 种产品?!?我错过了什么吗?

祝好,朱利安

您正在使用允许您通过 xls 进行查询的第 3 方库 (Linq to Excel)。但是您的第二个查询中的问题应该是由于如何实施 Linq 提供程序来查询 excel 文档。在您调用 ToList() 时,您正在将这些行存入内存,因此您不再使用该 Linq 提供程序,您现在使用 Linq to Object 处理 51 行。

通常,当您根据情况编写查询时,您在第二个查询中应用的条件会被 Linq 提供程序视为 &&。我不知道为什么 Linq to Excel

不是这种情况