我不确定这是怎么可能的,但是我有两个表,我想通过表1的值从表2中获取一个值。
表1有一个称为“ rank”的外键,它是一个int。表2具有一个名为“ name”的值,该值为a string。现在,表1的“等级”与表2的“ ID”相关。
int
string
所以当我说
var result = db.Table1.Select(x => new { x.name, x.rank }).ToList(); //Bob - 2
我真的想说些类似的话
var result = db.Table1.Select(x => new { x.name, Table2.rank.Where(ID == x.rank) }).ToList(); //Bob - Gold
我仍然对LINQ还是陌生的,而且我不确定如何rank从这样的查询中的其他表中获取的字符串值。
rank
编辑
我正在使用的表及其关系值。
用户:ID(PK),s1elo(从FK到PastElos),冠军(从FK到ChampionList),elo(从FK到EloList)
PastElo:ID(PK),排名
ChampionList:ID(PK),姓名
EloList:ID(PK),排名
用户和PastElo的工作示例
var result = db.Users.Join(db.PastEloes, x => x.s1elo, y => y.ID, (x, y) => new { y.Rank, x.name, x.other_items_in_Users }).ToList();
注意:PastElo是PastEloe的产品,是由于在我同步数据库时EF使所有内容复数,因此为什么User也是Users,我认为这被称为“上下文”。
您可以尝试以下操作:
var result = db.Table1.Join(db.Table2, x=>x.rank, y=>y.ID, (x,y) => new { x.rank, y.Name }).ToList();
在上面的linq查询中,我们Join在两个表之间创建一个,Table1并Table2基于关联,然后选择所需的表。
Join
Table1
Table2
您可以尝试编写此查询的另一种方法是:
var result = (from t1 in db.Table1 join t2 in db.Table2 on t1.rank equals t2.ID select new { t1.rank, t2.Name, }).ToList();