我有一个旧的 FoxPro 程序,它执行 SQL 查询,其中包括以下内容:
SELECT Region,
Year AS yr_qtr,
SUM(Stock) AS inventory
**...
COUNT(Rent) AS rent_ct
FROM
**...
GROUP BY Region, Year
ORDER BY Region, Year
INTO CURSOR tmpCrsr
该查询针对 .DBF 表文件,并包含 Excel 文件中的数据。我已经使用这两种方法在我的 C# 程序中填充用户定义对象的枚举。(不确定是否需要 .AsEnumerable。)然后我尝试使用 LINQ to Dataset 来查询用户对象列表并创建相同的结果集:
var rslt1 = from rec in recs_list //.AsEnumerable()
group rec by new {rec.Region, rec.Year} into grp
select new
{
RegName = grp.Key.Region,
yr_qtr = grp.Key.Year,
inventory = grp.Sum(s => s.Stock),
// ...
rent_count = grp.Count(r => r.Rent != null)
};
这给了我一个警告,“表达式的结果总是'true',因为'decimal'类型的值永远不等于'decimal'类型的'null' ”对于Rent列的Count()。
这是有道理的,但是我该如何计算不包括值为 .NULL 的行。FoxPro 表中的该列(或任何 SQL 数据库表中的 NULL,就此而言)?我不能对十进制值进行空测试。