Linq to Entityで複合キー内部結合(inner join on malutiple column for linq to entity)
2532 ワード
このようなSQL
複合.sql
SELECT a.* FROM tableA inner join tableB
on
tableA.Id = tableB.Id
and
tableA.Code = tableB.Code
chain_code_join.cs
var test = context.tableA
.Join(context.tableB,
(a) => new {a.Id,a.Code},
(b) => new {b.Id,b.Code},
(a,b) => a
);
↓chain codeじゃない版(動かしていない自信なし(大体こんな感じ))
chain_code否_join.cs
var test = from a in context.tableA
join b in context.tableB
on
(a) => new {a.Id,a.Code}
equals
(b) => new {b.Id,b.Code}
select a;
ちなみに名前が違うcolumn同士を結合しようとすると意味不明のエラーが出る。
↓エラーになります。
error.cs
SELECT a.* FROM tableA inner join tableB
on
tableA.Id = tableB.tableAId
and
tableA.Code = tableB.tableACode
こんな時はエイリアスを用意してやらないといけない。
↓エイリアスで指定するとうまくいく例
filename
var test = context.tableA
.Join(context.tableB,
(a) => new {Id = a.Id,Code = a.Code},
(b) => new {Id = b.Id,Code = b.Code},
(a,b) => a
);
スター型の例
filename
var test = context.tableA
.Join(context.tableB,
(a) => new {Id = a.Id,Code = a.BCode},
(b) => new {Id = b.Id,Code = b.Code},
(a,b) => new { a, b})
.Join(context.tableB,
(ab) => new {Id = ab.Id,Code = ab.CCode},
(c) => new {Id = c.Id,Code = c.Code},
(ab,b) => new { ab, b})
);
という感じになります。
ビバ!りんくとうえんてぃてぃ!
MSDNのAPIライブラリはすごい網羅しているのに別言語に変更したくなるくらい読みにくいのである。
https://msdn.microsoft.com/ja-jp/library/Bb311040(v=VS.120).aspx
Author And Source
この問題について(Linq to Entityで複合キー内部結合(inner join on malutiple column for linq to entity)), 我々は、より多くの情報をここで見つけました https://qiita.com/kotaroino@github/items/0087d3991be3c66b7ede著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .