我有一個MySQL數據庫,我試圖用Entity Framework進行查詢。Linq To Entities:針對一組值來檢查多列
我有一個對照表,看起來像這樣:
match_id,winning_hero1,winning_hero2,winning_hero3,winning_hero4,winning_hero5
與winning_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;
}
}
是否有一個「更好」的方式去選擇這些比賽嗎?
謝謝。
更好的方法是擁有一個winning_hero集合而不是5個獨立的winning_heros。 – 2013-07-27 01:04:45
您的數據設計錯誤。看看我的答案。 – ataravati