0
私はラムダをかなり新しくしています。私はdbから製品を引き出し、著者のテーブルに参加する結合を作成しようとしています。しかし、私のdbの一部の製品には、製品パッケージなどの作者がいません。このため、クエリはそれらのレコードを取得しません。テーブルに参加するときにLinq Lambda joinが中断する
linqラムダで作成者を所有している、所有していないすべての製品のレコードを取得する方法はありますか?内側の結合または右側の結合と同様?ここに私のdb /クエリ:
DATABASE
製品
+-----------------------------------------+--------+----+---------+
| FullName | TypeId | Id | Sku |
+-----------------------------------------+--------+----+---------+
| The Matrix | 1 | 23 | MAT |
| Lord Of The Rings | 1 | 22 | LOTR |
| Package: Lord of the rings & The Matrix | 2 | 33 | LOTRMAT |
+-----------------------------------------+--------+----+---------+
AuthorAssignments
+--------+----+----------+
| TypeId | Id | AuthorId |
+--------+----+----------+
| 1 | 23 | 1 |
| 1 | 22 | 2 |
+--------+----+----------+
著者
+----------+------------------+
| AuthorId | Author |
+----------+------------------+
| 1 | The Wachowskis |
| 2 | J. R. R. Tolkien |
+----------+------------------+
QUERY
var allitems = _contentService.Products.Select(
x => new {x.FullName, x.TypeId, x.Id, x.Sku})
.Join(
_contentService.AuthorAssignments,
x => new {x.TypeId, x.Id},
y => new {y.TypeId, y.Id},
(x, y) =>
new
{
x.Sku,
x.FullName,
x.Id,
x.TypeId,
y.AuthorId
})
.Join(
_contentService.Authors,
authId => authId.AuthorId ,
auth => auth.Id,
(authId, auth) =>
new
{
authId.Sku,
authId.FullName,
authId.Id,
authId.TypeId,
authId.Image,
auth.Author
});
これは私にこのような結果与える:これは私が
+-----------------------------------------+----------+----+---------+------------------+
| FullName | TypeId | Id | Sku | Author |
+-----------------------------------------+----------+----+---------+------------------+
| The Matrix | 1 | 23 | MAT | The Wachowskis |
| Lord Of The Rings | 1 | 22 | LOTR | J. R. R. Tolkien |
| Package: Lord of the rings & The Matrix | 2 | 33 | LOTRMAT | null |
+-----------------------------------------+----------+----+---------+------------------+
のように見えるを達成しようとしているものです時に
+-------------------+--------+----+------+------------------+
| FullName | TypeId | Id | Sku | Author |
+-------------------+--------+----+------+------------------+
| The Matrix | 1 | 23 | MAT | The Wachowskis |
| Lord Of The Rings | 1 | 22 | LOTR | J. R. R. Tolkien |
+-------------------+--------+----+------+------------------+
をそのsinc eパッケージには、それを無視した1つの著者レコードが含まれていません。どんな助けでも大歓迎です。
UPDATE
申し訳ありませんが、私はNHibernateはを使用していますことを言及するのを忘れてしまいました。したがってgroupjoinsが実装されていません:(
あなたは間違いなく左外部結合必要がありますが、率直に言って、それはですクエリ構文を使用した場合、変更は簡単ではありません。 –
問題は、動作中のクエリを使用するか、メソッド構文を使用するか(whaあなたはラムダと呼ぶ)? –
ええ、私はラムダ式でのみ滞在したいと思います。 – NeoSketo