我有一个奇怪的问题,我完全不明白。也许我错过了什么。
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?我错过了什么吗?
最好的问候,朱利安
答案 0 :(得分:0)
您使用的第三方库允许您通过xls(Linq to Excel)进行查询。但是,第二个查询中的问题应该是由于Linq提供程序如何实现查询excel文档。在您调用ToList()
时,您将这些行带到内存中,因此您不再使用该Linq提供程序,您现在使用Linq来对齐51行。
通常,当您根据具体情况撰写查询时,您在第二个查询中应用的条件将被Linq提供程序视为&&
。我不知道为什么在Linq to Excel中不是这样的