私は学校のプロジェクトを行っており、この最後の問題について助けが必要です。MVC多くのテーブルに2つのテーブルを追加し、結果に基づいてリストを作成する#
現在、私は多くの2つの結合を行い、結果を持つIEnumerableリストを埋めようとしています - linqとlambdaを使用しています。
目的は、すべての製品に互換性のあるゲームを表示することです。
今のように私のコード:
else
{
var result = (from g in db.Games
join gs in db.GameSize
on g.GameId equals gs.GameId
join s in db.Size
on gs.SizeId equals s.SizeId
join p in db.Product
on s.SizeId equals p.SizeId
select p.Size.Name);
games = db.Games
.Where(game => game.GameSize
.All(s => s.Size.Name == result.FirstOrDefault()));
}
私の考えは、テーブルを通じて参加し、一致した商品コードを持つgameidを見つけることです - とし、「ゲーム」に追加します。
私は、この表のデザインがひどいこと、FirstOrDefault()で最初の結果しか得られていないことに気付いています。
私に手伝ってくれる提案や解決策はありますか?ありがとう。
私には意味がないかどうか質問してください。
本質的に私はちょうどサイズにリンクされたゲームを表示することを望んでいません。私のテーブルは次のようになります。
--SIZE
insert into size values ('Large')
insert into size values ('Medium')
insert into size values ('Small')
--GAMES
insert into games values ('Magic The Gathering')
insert into games values ('Pokemon')
insert into games values ('Dead of Winter')
--GAMESIZE (RELATION GAMES AND SIZE) (SIZEID, GAMEID)
insert into gamesize values (1, 1)
insert into gamesize values (2, 2)
insert into gamesize values (2, 3)
:
ロングとショート、私はきちんとあなたのコードを理解していた場合、あなただけの1の単純なラインにこのすべてを減らすことができます。特定の製品に関連するものではなく、すべての製品のデータベース内のすべてのゲームを印刷します。 – MrBawsEnough
さて、私はこれらのエンティティの外観をほとんど推測していますが、特定の製品に限定するためにwhere句を追加するだけです: 'db.Games.Include(...)。Where(m => m .GameSize.Size.Product.Id == productId) '。言い換えれば、すべてのデータを持っているので、探しているゲームだけを含める必要があります。 –
私が持っている問題は、私がこれを作ることができないということです。それは、ゲームやサイズを商品と比較させません。私は、ユーザー入力 'if(size!= null) { games = db.Games .Where(game => game.GameSize .All(s =>))を持つ製品に正しいゲームを追加するのに似たようなものを作りました。 s.ize.Name == size)); } ' – MrBawsEnough