以下を含む SQL クエリを実行する古い FoxPro プログラムがあります。
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)
};
Rent 列の Count() について、「型 'decimal' の値は型 'decimal' の 'null' と決して等しくないため、式の結果は常に 'true' です」という警告が表示されます。
これは理にかなっていますが、.NULL の値を持つ行を除外してカウントするにはどうすればよいでしょうか。FoxPro テーブルのその列 (または SQL データベース テーブルの NULL) については? 10 進数値の null テストを実行できません。