Entity Framework でクエリを実行しようとしている MySQL DB があります。
次のようなマッチ テーブルがあります。
match_id、wining_hero1、wining_hero2、wining_hero3、wining_hero4、wining_hero5
wining_hero は整数で識別されます。
ヒーロー ID のリストが与えられた場合、これらのヒーローがすべて優勝チームに所属していたすべての試合を返したいと考えています。
このようなもの:
public List<MatchEntity> GetAllMatchesWithWinningHeroes(List<int> heroList)
{
List<MatchEntity> matchList = null;
using (var context = new dotaEntities())
{
switch (heroList.Count)
{
case 1:
matchList = context.MatchEntities.Where(m => m.winning_hero1 == heroList[0]
|| m.winning_hero2 == heroList[0]
|| m.winning_hero3 == heroList[0]
|| m.winning_hero4 == heroList[0]
|| m.winning_hero5 == heroList[0]).ToList();
break;
case 2:
matchList = context.MatchEntities.Where(m => (m.winning_hero1 == heroList[0]
|| m.winning_hero2 == heroList[0]
|| m.winning_hero3 == heroList[0]
|| m.winning_hero4 == heroList[0]
|| m.winning_hero5 == heroList[0])
&& (m.winning_hero1 == heroList[1]
|| m.winning_hero2 == heroList[1]
|| m.winning_hero3 == heroList[1]
|| m.winning_hero4 == heroList[1]
|| m.winning_hero5 == heroList[1])).ToList();
break;
case 3:
//etc..
}
return matchList;
}
}
これらの一致を選択するための「より良い」方法はありますか?
ありがとうございました。