【发布时间】:2014-04-08 11:40:05
【问题描述】:
我是 Linq to SQL 的新手,我正在寻找一种简洁的方法来根据来自 UserSummonerTable 的主键值“UserId”从 SummonerTable 中获取 Summoner 列表。 UserSummonerTable 中的每个 Summoner1-Summoner5id 都是引用 SummonerTable 中的主键“Id”的外键。我想使用 UserSummonerTable 中的所有 SummonerId 来获取 SummonerTable 中所有对应的 Summoner。
提前致谢!
编辑:我为引用所有列的每个表创建了对象,并且可以单独获取每个表,但希望有一种方法可以在一个 Select 中完成所有操作。
编辑:这让我接近我想要的,尽管我想将结果包装到一个具有 Id 和 Server 属性的对象“Summoner”中,而且它非常混乱。我正在玩一些人们建议的更简洁的表格,但无济于事,但我会继续阅读和尝试!如果有人有任何建议,他们将不胜感激。一旦我让它按预期工作,我就会标记一个答案,或者在我完全弄清楚之前给人们称赞让我走上正确的轨道是一种好习惯吗?
MyDataContext dc = new MyDataContext(ConfigurationManager.ConnectionStrings["StatServer"].ConnectionString);
var t = (from user in dc.GetTable<UserSummoner>()
where (user.UserId.Equals(id))
select user).First();
var summoners = (from summoner in dc.GetTable<SummonerTable>()
where (summoner.Id == t.Summoner1Id || summoner.Id == t.Summoner2Id || summoner.Id == t.Summoner3Id || summoner.Id == t.Summoner4Id || summoner.Id == t.Summoner5Id)
select new { summoner.Id, summoner.Server }).ToList();
【问题讨论】:
-
5个外键是什么原因?看起来是个非常糟糕的主意。
标签: c# join linq-to-sql