Linq / Linqtoexcel问题选择

时间:2017-08-07 17:50:16

标签: c# jquery linq object linq-to-excel

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

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
  • products.xlsx绕过50'000行/产品
  • 51个产品有折扣
  • 14'000个产品有&#34; YTM&gt; 3.0&#34; - 这是怎么回事?

据我所知,我正在以折扣价格搜索YTM产品。如何从51获得14&000; 000?我错过了什么吗?

最好的问候,朱利安

1 个答案:

答案 0 :(得分:0)

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

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