Linqを使用する必要がある WinForms プロジェクトに取り組む予定ですが、それについて何も知らないので、学習を始めたばかりです。
Linq に関するチュートリアルを読んだ後、Microsoft Windows SDK に付属System.Data.Linq.DataContext
のツールを使用して作成しました。SqlMetal
例として使用しているデータベースは"Northwind"です。
次のように簡単なクエリを作成できました。
Northwind db = new Northwind("Data Source=local;Initial Catalog=Northwind;Integrated Security=True");
var query = from c in db.Customers
join o in db.Orders on c.CustomerID equals o.CustomerID
select new
{
Customer_ID = c.CustomerID,
Customer_Name = c.ContactName,
Order_ID = o.OrderID
};
そして、結果を a に表示するDataGridView
と、すべてがうまくいきます。
しかし今、私は解決できていない問題に直面しています。
を作成するために前のクエリを変更しようとしたLEFT OUTER JOIN
ので、次のようにしました。
var query = from c in db.Customers
join o in db.Orders on c.CustomerID equals o.CustomerID into j
from or in j.DefaultIfEmpty()
select new
{
Customer_ID = c.CustomerID,
Customer_Name = c.ContactName,
Order_ID = or.OrderID
};
しかし、これらのデータ セットを表示しようとするとDataGridView
、エラーが発生します。
The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
この問題は「注文」を持たない「顧客」が原因であることを知っているため、システムは変数にnull
値を代入しようとしint
ます。
しかし、このエラーが発生しないようにするにはどうすればよいですか?LEFT OUTER JOIN
前もって感謝します。