[解決済み] Linq to Sql: 複数の左外部結合
2022-04-25 23:12:31
質問
LINQ to SQLを使用して、複数の左外部結合を使用する方法がわからなくて困っています。 1つの左外部結合を使用する方法は理解しています。 私はVB.NETを使用しています。 以下は私のSQLシンタックスです。
T-SQL
SELECT
o.OrderNumber,
v.VendorName,
s.StatusName
FROM
Orders o
LEFT OUTER JOIN Vendors v ON
v.Id = o.VendorId
LEFT OUTER JOIN Status s ON
s.Id = o.StatusId
WHERE
o.OrderNumber >= 100000 AND
o.OrderNumber <= 200000
解決方法は?
この方がすっきりするかもしれませんね(
を使えば、すべての
into
ステートメント
):
var query =
from order in dc.Orders
from vendor
in dc.Vendors
.Where(v => v.Id == order.VendorId)
.DefaultIfEmpty()
from status
in dc.Status
.Where(s => s.Id == order.StatusId)
.DefaultIfEmpty()
select new { Order = order, Vendor = vendor, Status = status }
//Vendor and Status properties will be null if the left join is null
もう一つの左結合の例です。
var results =
from expense in expenseDataContext.ExpenseDtos
where expense.Id == expenseId //some expense id that was passed in
from category
// left join on categories table if exists
in expenseDataContext.CategoryDtos
.Where(c => c.Id == expense.CategoryId)
.DefaultIfEmpty()
// left join on expense type table if exists
from expenseType
in expenseDataContext.ExpenseTypeDtos
.Where(e => e.Id == expense.ExpenseTypeId)
.DefaultIfEmpty()
// left join on currency table if exists
from currency
in expenseDataContext.CurrencyDtos
.Where(c => c.CurrencyID == expense.FKCurrencyID)
.DefaultIfEmpty()
select new
{
Expense = expense,
// category will be null if join doesn't exist
Category = category,
// expensetype will be null if join doesn't exist
ExpenseType = expenseType,
// currency will be null if join doesn't exist
Currency = currency
}
関連
-
[解決済み] vb.netで2つのタイムスパン間の時差を取得する
-
[解決済み] VB.NET: FormClosing()を中止する
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL ServerにおけるLEFT JOINとLEFT OUTER JOINの比較
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] 最初の行への結合方法
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] LEFT OUTER JOINはどのように左のテーブルに存在するよりも多くのレコードを返すことができますか?
-
[解決済み] LINQ to SQL - 複数の結合条件を持つ左外部結合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Microsoft Access Database FileのC:㊧Employees.accdbが認識されないのですが?
-
[解決済み] VB.NETのAndとAndAlsoの違いは何ですか?
-
[解決済み] VB.NETにおけるDirectCast()とCType()の違いについて
-
[解決済み] 算術演算でオーバーフローが発生した
-
[解決済み] VB.NETで文字列を比較する
-
[解決済み] VB.NET: DataGridViewをクリアする
-
[解決済み] Chr(3)は定数式なのに、Chr(172)は定数式でないのはなぜですか?
-
[解決済み] C#の'?'演算子に相当するVB.NETはありますか?
-
[解決済み] VB.NETにおけるクラスとモジュールの比較
-
[解決済み] LINQ to SQL 左外部結合