C# Linq Join not equal
本文关键字:equal not Join Linq | 更新日期: 2023-09-27 18:18:45
我正在尝试为一个游戏创建一个linq join,它将选择一个玩家不玩的所有位置,使用以下查询:
var m_player_positions = from pl in tfs.Players
join pos in tfs.Positions
on new { X = true } equals new { X = (pl.MainPositionID != pos.PositionID) }
select new {PlayerName = pl.Forename, Position = pos.Name};
我知道现在我无法在连接=的右侧使用pl,并且不能在左侧使用pos,是否有一种方法可以使用linq执行这个特定的连接?
基本上可以使用SelectMany
:
var m_player_positions =
tfs.Players.SelectMany(
pl => tfs.Positions
.Where(pos => pl.MainPositionID != pos.PositionID)
.Select(pos => new {PlayerName = pl.Forename, Position = pos.Name}));
我被打败了,不过给你。
var m_player_positions = from pl in tfs.Players
join pos in tfs.Positions
on pl.MainPositionID == pos.PositionID
select new {PlayerName = pl.Forename, Position = pos.Name};
选择对'equals'的限制是为了确保在连接中只使用相等。这是因为具有更高级逻辑的查询不能可靠地转换为关系语句。
考虑本文档的第二段。http://msdn.microsoft.com/en-us/library/bb311040.aspx