繁体   English   中英

C#Linq Join不相等

[英]C# Linq Join not equal

我正在尝试为游戏创建linq联接,该联接将使用以下查询选择玩家不参与的所有位置:

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};

选择``等于''的限制是为了确保联接中仅使用等于,这是因为具有更高级逻辑的查询无法可靠地转换为关系语句。

考虑本文档的第二段。 http://msdn.microsoft.com/en-us/library/bb311040.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM